Epicor ICETools UserGuide
Epicor ICETools UserGuide
Epicor ICETools UserGuide
1
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 2015. All rights reserved. No part of this publication may be reproduced in any form
without the prior written consent of Epicor Software Corporation.
3.1.400
Revision: December 17, 2015 3:56 p.m.
Total pages: 1229
sys.ditaval
Contents
Contents
Introduction..........................................................................................................................19
3.1.400
Contents
3.1.400
Contents
3.1.400
Contents
3.1.400
Contents
Chapter 4: Searches.......................................................................................451
Default Search Interface...............................................................................................................................451
Default Features...................................................................................................................................451
Hot Key Searches..................................................................................................................................454
Quick Searches............................................................................................................................................456
Create a Quick Search..........................................................................................................................457
Activate Quick Search....................................................................................................................457
Quick Search Detail Sheet..............................................................................................................458
Quick Search Criteria.....................................................................................................................461
Test a Quick Search.......................................................................................................................466
Display a Quick Search..........................................................................................................................467
Quick Search Tab...........................................................................................................................467
Context Menu Options..................................................................................................................469
Default Search Program.................................................................................................................470
Business Activity Query Searches..................................................................................................................473
Enable BAQ Search Fields......................................................................................................................473
Use a BAQ Search.................................................................................................................................476
Advanced Searches......................................................................................................................................478
Use an Advanced Search.......................................................................................................................479
Named Searches..........................................................................................................................................479
Create a Named Search........................................................................................................................479
Named Search Details...........................................................................................................................483
Auto Populate Data..............................................................................................................................485
Auto Load Search.................................................................................................................................487
Override Search Options..............................................................................................................................490
Data Tag Searches.......................................................................................................................................490
Add Data Tags to a Record...................................................................................................................490
Add Data Tags to Records in a Grid......................................................................................................492
Perform a Data Tag Search...................................................................................................................494
Data Tags and BPM Directives...............................................................................................................496
Data Tag Maintenance..........................................................................................................................497
Predictive Search..........................................................................................................................................500
Activate Predictive Search.....................................................................................................................500
3.1.400
Contents
3.1.400
Contents
3.1.400
Contents
10
3.1.400
Contents
3.1.400
11
Contents
Chapter 9: Dashboards..................................................................................821
Standard System Dashboards.......................................................................................................................821
12
3.1.400
Contents
Navigate in a Dashboard.......................................................................................................................822
Conduct an Advanced Search...............................................................................................................826
Assign Dashboard Developer Rights.............................................................................................................827
Dashboard Creation.....................................................................................................................................828
Dashboard Developer Mode.................................................................................................................828
Add a Query to the Dashboard.............................................................................................................832
Add the Query...............................................................................................................................832
Modify Query Properties.......................................................................................................................837
General Properties.........................................................................................................................837
Publish to Title Bar.........................................................................................................................839
Apply Filters to a Query.................................................................................................................841
The Grid View.......................................................................................................................................843
The Grid Properties Window..........................................................................................................844
Change Display Columns and Enable Group By and Summarization in a Grid.........................844
Change the Grid Display.........................................................................................................847
Apply a Filter to a Grid...........................................................................................................852
Add a New Grid View to the Dashboard.................................................................................853
Add a Rule to Highlight Cells..................................................................................................857
Add an Image Column to a Grid Based on a Rule...................................................................861
The Chart View.....................................................................................................................................866
The Chart Properties Window........................................................................................................866
Add a Chart View...................................................................................................................866
Chart Settings...............................................................................................................................869
Modify Chart Settings............................................................................................................869
The Tracker View..................................................................................................................................872
The Tracker Properties Window.....................................................................................................873
Add a Tracker View for an Advanced Search...........................................................................873
Add an Advanced Search with Range.....................................................................................875
The Gauge View...................................................................................................................................882
The Gauge Properties Window......................................................................................................882
Add a Gauge View to the Dashboard.....................................................................................882
The URL/XSLT View...............................................................................................................................885
URL/XSLT Properties.......................................................................................................................885
Add a URL Link to Display the Customer Website...................................................................885
The Process Link...................................................................................................................................888
Process Link Properties...................................................................................................................888
Add a Process Link for Customer Entry...................................................................................888
The Report View and Report Link..........................................................................................................892
Report Options..............................................................................................................................892
Design Crystal Report....................................................................................................................893
Select Report Data.........................................................................................................................897
Add Report View...........................................................................................................................904
Add a Report Link to the Dashboard..............................................................................................907
Publish and Subscribe Functionality..............................................................................................................911
Add a Secondary Query to Display Line Item Shipment Information.......................................................911
3.1.400
13
Contents
Publish..................................................................................................................................................913
Publish Fields from a Query............................................................................................................914
Subscribe..............................................................................................................................................915
Apply a Filter that Subscribes to the Published Order and Line Number..........................................915
The Dashboard Browse................................................................................................................................918
Add a Dashboard Browse to the Dashboard..........................................................................................918
Dashboard User Notes and Tech Notes.........................................................................................................924
Update Notes.......................................................................................................................................925
Dashboard Properties...................................................................................................................................926
Modify the Dashboard Title Bar.............................................................................................................927
Enable the Dashboard as Advanced Search...........................................................................................929
Dashboard Modification...............................................................................................................................931
Copy a Dashboard................................................................................................................................931
Multi Threaded Save....................................................................................................................................934
Reusing Views..............................................................................................................................................937
3.1.400
Contents
3.1.400
15
Contents
16
3.1.400
Contents
3.1.400
17
Contents
18
3.1.400
Introduction |
Introduction
The Epicor ICE 3.1 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 ERP application and advanced users looking to manage and display key data for their specific business
needs.
The first 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. Next you explore how to use the External Query
functionality to manipulate data from external data sources. Then the BAQ Report Designer chapter explains how
to turn a BAQ into a SQL Server Reporting Services (SSRS) report.
The Searches chapter that follows explores the tools you can use to easily locate and organize records using filters
and specific criteria.
The chapters that follow discuss the Business Process Management (BPM) functionality you can use to create
workflows that automate, execute and monitor business processes. Learn how to create method, data, and BAQ
directives that ensure data entries are valid and reflect your business cycle. The Custom Business Process
Management chapter discusses more advanced techniques such as execution of custom code written in C#
language or creation of external methods. The BPM functionality is concluded with an overview of utilities available
within the BPM module.
Then, the Global Alerts chapter explores how you can use both standard and custom global alert messaging.
Global alerts are email messages you activate to help specific users track data activity. Learn how to determine
which alerts you want continuously monitoring data and who will receive the automatic email messages generated
by the specific database activity.
The chapters that follow explore how to monitor, display and manipulate your business data using Dashboards.
Learn how to incorporate BAQs and BPMs for custom use on smart client dashboards, executive dashboards,
and mobile device dashboards.
The guide concludes with the Epicor Social Enterpise chapter. You can use this information networking tool to
communicate with other Epicor ERP users and to follow changes to your business data as they occur in your
Epicor ERP application.
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 organizations unique business practices.
3.1.400
19
20
3.1.400
Table View
To use the 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.
3.1.400
21
2. Click the Table button to find and select the table you wish to review.
In Epicor ERP version 10, user-defined columns are placed
within separate UD tables.
For example, the Part table may have a corresponding
Part_UD table.
Field View
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.
22
3.1.400
3.1.400
23
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 fields purpose
and other useful information.
13. The Display Format section contains options that change how the selected fields information displays on
the Fields sheet. Here is what these options do:
Schema When selected, this option displays the fields schematic values. These values define how the
database views and evaluates this fields data.
Alphabetic When selected, this option displays the fields alphanumeric values. Use these values to
help you understand how the fields 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 that 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 > Setup >
Ship Via.
1. Click the Help menu.
2. From the menu options, select Field Help to display the pane in the left portion of the screen.
24
3.1.400
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.
3.1.400
25
26
3.1.400
13. The Description field displays the concise explanation for the field. This text explains the fields 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
This program is not available in Epicor Web Access.
2. Notice you can filter the business activity queries by various types. To view system queries, select the
System check box.
3.1.400
27
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.
6. The Description field describes the purpose of the query.
7. The Shared property indicates whether a query is available to all users within the current company. System
queries are all marked as Shared.
8. 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.
9. 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.
28
3.1.400
10. 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.
11. 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 the External Business Activity Queries chapter.
12. The All Companies check box indicates whether the BAQ Definition is visible to all companies on the same
database server. When the Epicor application uses multiple companies contained within a single database,
the BAQ usage and visibility is applied regardless of multi-company direct configuration. For companies
hosted on different databases, this check box initiates the Service Bus processing, when it is configured to
synchronize BAQs to external companies. If the custom BAQ is created from a Company that is running
under a multi-tenant license, the definition becomes visible to all companies within the same Tenancy as
the Owning Company.. The BAQ definition can only be updated from the original company, but is available
for execution and review in other companies.
13. Select the system query you need and click OK.
3.1.400
29
3. In the Description field, enter a concise explanation for the query. In this example, enter Total Value of
Quotes, Orders, Invoices by Date.
4. Notice the Author field displays the name of the user who created the current business activity query. Other
users cannot modify the current query. If you need to assign author rights to another user, use the Actions
> Change Author option.
5. The Owning Company displays the company inside which the current BAQ was created. You cannot change
this value; only users within the Owning Company can modify this BAQ.
If the All Companies check box is selected, then companies within the same organization as the Owning
Company can view and use the query. If the System BAQ check box is selected, the Owning Company field
is blank. This indicates the current BAQ is available to all companies within the current organization.
6. The Shared check box indicates this query is available to all users. After you save the query, all users in your
company can utilize this query using the available BAQ consumers, such as Quick Searches, BAQ info zones,
BAQ reports, and dashboards. Note these users will need various rights to use these features.
To learn more about creating your own dashboards, refer
to the Dashboards chapter. For more information about
how to use global BAQs and the multi-company
functionality, review the Multi-Site Technical Reference
Guide available within the application help.
7. The All Companies check box controls whether the current BAQ Definition is visible to all companies on
the same database server. When the Epicor application uses multiple companies contained within a single
30
3.1.400
database, the BAQ usage and visibility is applied regardless of multi-company direct configuration. For
companies hosted on different databases, this check box initiates the Service Bus processing, when it is
configured to synchronize BAQs to external companies.
If the custom BAQ is created from a Company that is running under a multi-tenant license, the definition
becomes visible to all companies within the same Tenancy as the Owning Company.
The options/values for tenant and multi-tenant features are only for Epicor hosted environments. Typically
you can ignore these options. Internal Epicor administrators who need more information should refer to
the Epicor SaaS Installation Guide.
The following rules apply to usage of BAQs visible across companies:
The BAQ definition can only be updated from the original company, but is available for review and
execution in other companies. To modify the BAQ definition in other companies, you need to create a
copy of the BAQ.
The BAQ ID of queries having the All Companies property must be unique across all companies.
When you create a BAQ visible across companies in Company A, and Company B uses a local BAQ with
the same ID, a warning message displays. A user is informed that in Company B, the local BAQ is used
and the BAQ created in Company A will not be available for use.
Likewise, when you create a local BAQ in Company A and a BAQ visible to all companies, having the
same ID, aready exists in the Company B, a warning message displays. A user is informed that the local
BAQ will take precedence over the All Companies BAQ. The same principle is true for the BAQ import
process.
The local BAQ always take precedence over the BAQ
visible to all companies, when the naming conflict
occurs.
To see in which companies (outside the current company), references to the BAQ were created, use the
Where Used tabs.
This option is not supported in External BAQs; queries
retrieved using external datasources are company-specific
only.
8. The System BAQ check box indicates whether the current BAQ is installed with the Epicor ERP application.
If the current BAQ is a system BAQ, you cannot make changes to it.
This information displays in the read-only format.
9. By selecting the Updatable check box, you indicate the current query allows performing database updates.
This option activates the sheets under the Update tab; use these sheets to indicate which fields will be
available for data entry through this query. You can place an updatable BAQ on both smart client dashboards
and mobile device dashboards.
To learn how to utilize updatable queries, see the Updatable Business Activity Query section later in this
chapter.
10. The Cross-company check box controls if the BAQ brings back results across multiple companies.
In order to use this function, a selected user must have the ability to create cross-company queries.
11. When you finish, on the Standard toolbar, click Save.
3.1.400
31
Add Table
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.
32
3.1.400
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.
3.1.400
33
6. To include a table in your query, select a table and drag it on the canvas in the center pane.
To perform multi-selection, hold Ctrl or Shift and select
tables you want to include in the BAQ.
Additional Controls
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.
You cannot select multiple tables/objects at once.
34
3.1.400
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 behavior. Users should not use this option when creating
new BAQs as this flag does not support new features such as subqueries. New BAQs should use standard
SQL syntax with GROUP BY and HAVING, and SQL aggregate functions to create aggregate queries.
3.1.400
35
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.
36
3.1.400
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).
Table Relations
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.
It is crucial a user explicitly determines the correct order of
tables in the query to retrieve the expected results.
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.
3.1.400
37
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.
38
3.1.400
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.
3.1.400
39
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 lists all relations
with their fields. The result relation expression displays in the Expression text box at the bottom. You can
40
3.1.400
select one of the relations and press the Replace In Query button. As a result, fields from the Dictionary
form will replace fields used in the current BAQ relation.
7. In this example, accept the default relation between tables using the Company and CustNum columns.
3.1.400
41
42
3.1.400
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.
3.1.400
43
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.
You have the following options to create a relation:
Create a simple join between table fields using the
field1 = field2 pattern.
Construct an advanced expression, for example, using
functions or operations different from = (equals). There
is no list of predefined operators, you can enter a
custom expression of your choice.
6. If the BAQ designer determines a non-standard expression, it displays the Fx symbol in the middle of the
join square on the link.
44
3.1.400
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 in 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.
It is not possible to add a new connection to the already
connected tables. Instead add new fields on the Table
Relations tabs at the bottom of the page.
Table List
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 sheet.
3.1.400
45
2. The 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.
4. Notice what the current resulting SQL syntax looks like.
5. To change the order of tables, select a table and use the 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 to make it the first table on the list.
46
3.1.400
Table Criteria
Use the Table Criteria sheet to limit the data that displays in the BAQ results by adding filtering conditions for
the selected table.
When you add a filter to the table, the following rules apply:
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.
3.1.400
47
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 Dashboards chapters.
To create a table filter criterion:
1. Select a table on the canvas from which you want to filter the data. In this example, select the QuoteHed
table. Notice the table with a filter applied 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.
3. Click the Add Row button on the toolbar.
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.
48
3.1.400
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. From the Field drop-down list of fields of the table selected on the canvas, select the QuoteClosed field.
9. The Compare (operator) list defines how the selected field is 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
>=
<=
<>
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.
This operator is only used for backward
compatibility with legacy ABL/Progress
BAQs used in the Epicor 9 application.
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.
This operator is only used for backward
compatibility with legacy ABL/Progress
BAQs used in the Epicor 9 application.
ISNULL
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.
3.1.400
49
Operator
Description
CONTAINS
Returns data when the selected character field has data which is present within the defined
Filter Value.
In MSSQL, CONTAINS only works when
a field is fully indexed; otherwise, the
following error is thrown:
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 );
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. In this example, select the specified constant option. Click the specified link.
11. The Specify Value window displays.
50
3.1.400
12. In the Value field, enter the constant value you need. In this example, enter False as you want the query to
return open quotes.
13. Click OK.
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; navigate to the General sheet.
17. The Query Phrase text box displays the query you created. Notice your criterion is included as part of the
resulting SQL syntax.
3.1.400
51
SubQuery Criteria
Use the SubQuery Criteria sheet to narrow down BAQ results by adding filtering conditions on the selected
SubQuery.
When you add a filter to the SubQuery, the following rules apply:
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 sheet.
52
3.1.400
3.1.400
53
9. Enter the criteria for the second SubQuery. In this example, limit the BAQ results to only retrieve orders for
the customer Dalton.
10. You can now view your query; navigate to the General sheet.
11. The Query Phrase text box displays the query you created. Notice the filtering is applied to each SubQuery
within the resulting SQL syntax.
54
3.1.400
3.1.400
55
Filter Values
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.
56
3.1.400
5. From the Table drop-down list, select the table that 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.
8. The field value displays in the Filter Value column.
3.1.400
57
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.
58
3.1.400
Specified Expression
Use this option to filter the data against a specific expression you create. You can use this filter to build complex
expressions that are calculated when the criterion is applied to the query.
To create an expression:
1. From the Filter Value drop-down list, select the specified expression option.
3.1.400
59
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
select * from dbo.PartCOPart as PartCOPart
where PartCOPart.CoRevisionNum = @CustomParameter
This argument reference is replaced by the argument value when the query activates.
To select this option and create a new parameter:
1. From the Filter Value drop-down list, select the specified parameter option.
60
3.1.400
5. From the drop-down list, select the Data Type for the parameter. Available types:
nvarchar
int
decimal
date
datetime
bit
uniqueidentifier
bigint
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:
3.1.400
61
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 is then evaluated against this default
value.
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 is then 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 is then 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,
BAQ execution expects the list of values transmitted in the ExecutionParameter
table, instead of a single value.
This parameter is only used with the 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 ignores the criterion with this parameter.
Example In the condition StartDate > @param1, the
param1 value is null. If the Skip condition if empty check
box is selected, the BAQ does not check the criterion
specified for the StartDate field.
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
Values
The Values Editor displays controls for creating a new list of values. Use this functionality
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 is sent 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 that displays in the lookup list.
Value Column - defines the name of the column you want to use for the parameter
value.
62
3.1.400
Option
Description
User Codes
The Values Editor displays 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.
17. You can also create parameters through the Actions menu. To do this, from the Actions menu, select
Define Parameters.
3.1.400
63
64
3.1.400
3.1.400
65
66
3.1.400
3.1.400
67
7. Click OK.
8. The subquery field you defined displays in the Filter Value column.
Available Filter(s)
specified constants list
Use this filter to specify the list of constants.
specified list parameter
Use this filter to select an Item List parameter you want to use in the query execution.
This parameter contains a list of values supplied during query execution.
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 the InnerSubQuery or CTE type.
EXISTS operation
CONTAINS operation
68
3.1.400
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.
3.1.400
69
70
3.1.400
3.1.400
71
72
3.1.400
3.1.400
73
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)
74
3.1.400
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.
3.1.400
75
10. Click the ellipsis button to invoke the Pivot Aggregate Expression Editor.
11. Use the Pivot Aggregate Expression Editor to create an aggregation formula.
76
3.1.400
Similarly to the 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 the 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 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.
3.1.400
77
14. Now you must evaluate this field against the values you define. In the Filter Value column, select specified
constants list.
15. Click the word specified.
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.
78
3.1.400
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.
3.1.400
79
18. Now you can test the query. The BAQ output presents aggregated numbers of orders placed by each
customer throughout the selected years.
80
3.1.400
Display Fields
Use the Display Fields sheet 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 subsheets: 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.
The Display Column(s) grid changes when SubQuery in focus
is of the Union, UnionAll, Intersect or Except type.
3.1.400
81
2. To view the columns within each table, expand the table node. In this example, 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 makes 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 the selected column(s) into the Display Column(s) list. In this
example, 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 the column
header within BAQ results.
82
3.1.400
8. To change the field's format mask, modify the value in the Format field.
Several single character format options are available. Use these options in various combinations to display
the results in the format 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
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.
For updatable BAQs, you can define a second format in
the Updatable field editor. You launch the editor using
the Advanced Column Editor Configuration button
3.1.400
83
9. To group query results by specific column, select the Group By check box.
When selected, this field is listed in the Group By SQL
clause as well as in the Select clause. The Group By
statement is often used in conjunction with aggregate
queries utilizing aggregate functions, such as AVG, SUM,
or COUNT.
Outside the simple grouping mechanism you can use by
selecting this check box, the advanced grouping features
are available for use by clicking the Advanced Group By
Clause button. For more information, review the
Advanced Group By Clause topic later in this section.
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 Column(s) List and use the Up and Down Arrow buttons.
84
3.1.400
2. On a SubQuery that follows, set one of the Union, UnionAll, Intersect, or Except set operators. In this
example, SubQuery2 of the Union type is used.
3.1.400
85
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.
86
3.1.400
7. Use the Right Arrow button to move the fields into the Display Column(s) list.
8. The Alias field displays the field name 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 a SubQuery of the 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 the 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.
In the Display Column(s) grid, all fields, except for Group By, provide read-only information only.
10. The DataType field displays the type of data of the current SubQuery's column.
3.1.400
87
11. The Subquery Set Data Type displays the expected data type of the corresponding field from the group's
uppermost SubQuery, which is either the CTE or the TopLevel type.
12. When the expected data type is different from the selected one, the error indicator displays in the
corresponding Subquery Set Data Type column.
13. The Subquery Set Alias field displays the field name of the corresponding field from the uppermost
SubQuery.
In the resulting record set, field aliases are taken from the group's uppermost SubQuery, for 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 example above, 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
Equals, and Any Type difference between
columns occurs.
15. When the BAQ designer logic encounters any errors, they also display in the Analyze Message window.
88
3.1.400
16. In this example, the column mapping of SubQuery2 should look as follows.
3.1.400
89
1. Navigate to the Display Fields > Column Select sheet and click the Calculation (the calculator icon)
button.
90
3.1.400
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 list, select the data type generated by this calculation.
In this example, select int.
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.
Refer to the Business Activity Query Calculated
Fields topic in the application help for a complete list of
the format options available.
6. Enter the Label you want to display above this calculated fields column header in the BAQ grid. In this
example, enter Total.
7. Now you can start building the calculation logic in the Editor pane.
Be sure to use the appropriate SQL syntax within 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
3.1.400
91
mathematical expression used to evaluate a function. BAQ operators and functions are consistent with SQL
naming methodology.
A complete list of available Functions, Operators, and BAQ
Constants is discussed later in this chapter.
9. First navigate to the function or operator you need. Now either double-click 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 that you can then use within your calculation. For information about
creating parameters, review the previous Phrase Build Filter Values section
In this example, expand the OrderHed table and double-click the 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 the calculation logic is valid.
13. Click Save to complete the calculation.
This field now uses this calculation when you run the query.
92
3.1.400
If you have created the Inner or CTE type of Subqueries, you can also use them to build a calculated
field. For example, 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.
14. Click Close to exit the Calculated Field Editor window.
15. Your calculated field is now added to the list of Display Column(s).
16. You can use the Up and Down Arrow buttons to reposition the calculated field as necessary.
Example One
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.
3.1.400
93
Example Two
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 field is formatted as a number and displayed as a decimal.
94
3.1.400
Functions
The following tables display the functions you can use within the Calculated Field Editor.
Users are not limited to the functions from the Tree View. Any
function supported by the SQL Server used by your Epicor
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)
3.1.400
max(expression)
95
Function
Description
Calculates the maximum of all of the values of the numeric database field.
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.
Power(x, y)
power(expression. exponent)
Returns the expression raised to the power 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.
(x modulo y)
Round(x, y)
round(expression , precision )
Rounds a decimal expression to a specified number of places after the decimal
point.
Truncate(x, y)
String
String functions manipulate a string or query information about a string.
96
3.1.400
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.
Substitute(x[, y, ...])
Substring(x,y,z)
Replace(x,y,z)
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
3.1.400
97
Function
Description
Year(x)
datepart(year, expression)
Evaluates a date expression and returns the year value of that date, including the
century, as an integer value.
Month(x)
datepart(month, expression)
Evaluates a date expression and returns a month integer value from 1 to 12.
Day(x)
datepart(day, expression)
Evaluates a date expression and returns a day of the month as an integer value from
1 to 31.
WeekDay(x)
datepart(weekday, expression)
Evaluates a date expression and returns the day of the week as an integer value from
1 (Sunday) to 7 (Saturday) for that date.
Add-interval(x,y,z)
Conversion
Conversion functions transform an expression of one data type to another.
Function
Description
DateToString(x)
TimeToString(x)
DecimalToString(x)
convert(varchar, expression)
Converts a decimal value into a character value.
IntToString(x)
convert(varchar, expression)
Converts an integer value into a character value.
Integer(x)
convert(int, expression)
Converts an expression of any data type to a value of integer data type.
Decimal(x)
98
convert(decimal, expression)
3.1.400
Function
Description
Converts an expression of any data type to a decimal value.
Date(mm,dd,yyyy)
StringToDate("x")
IntToDateTime(x)
convert(datetime, expression)
Converts an integer expression, into a date value. The expression is treated as
number of days after 01/01/1900.
Logical(x)
convert(tinyint, expression)
Converts any data type into the logical data type.
Ranges
Functions in this category return the position, string entry, or number of elements from the list, based on the
expression.
Function
Lookup(x,y)
Description
[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)
Entry(x,y)
Entry(x,y,z)
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.
3.1.400
99
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.
Operators
An operator is a mathematical expression either used with a single function or used to process two or more
functions.
Section
Tree View
Editor View
Expression
Arithmetic
Add (x + y)
(+)
Addition operator.
Adds two numeric expressions. Adds days to date
(date + days).
Arithmetic
Divide (x / y )
(/)
Division operator.
Divides one numeric expression by another numeric
expression, producing a decimal result.
Arithmetic
Modulo operator.
Determines the remainder after division.
Arithmetic
Multiply (x * y)
(*)
Multiplication operator.
Multiplies two numeric expressions.
Arithmetic
Negate ( - x)
(-)
Arithmetic
Subtract (x - y)
(-)
Subtraction operator.
Subtracts one numeric expression from another
numeric expression.
Boolean
Equal (x = y)
(=)
Equal operator.
Returns TRUE if two expressions are equal.
Boolean
And (x and y)
and
And operator.
Returns TRUE if each logical expression is TRUE.
Boolean
Or (x or y)
or
Or operator.
Returns TRUE if either of the two logical expressions
is TRUE.
100
3.1.400
Section
Tree View
Editor View
Expression
Boolean
Not (Not x)
not
Not operator.
Returns TRUE if an expression is false and FALSE if an
expression is true.
Comparison
Equal (x = y)
Equal operator.
Returns TRUE if two expressions are equal.
Comparison
Comparison
>
Comparison
<=
<
Comparison
<>
Condition
If x Then y Else z
(case when
If-Then-Else condition.
then else end)
Evaluates and returns one of the two expressions,
depending on the value of a specified condition.
Condition
case
when then
when then
else
end
Other
Comment
/* */
Comment characters.
Allows adding explanatory text to a procedure
between the /* and */ characters.
Other
Begins
Begins
Begins operator.
Tests a character expression to see if that expression
begins with a second character expression.
Other
Matches
* *
Matches operator.
Compares a character expression to a pattern and
evaluates to TRUE if the expression satisfies the pattern
criteria.
3.1.400
101
BAQ Constants
The following table displays the BAQ constants you can use within the Calculated Field Editor.
BAQ Constant
Description
CompanyName
CountryCode
CountryGroupCode
The Country of Origin Code of the company the user is logged into.
CurComp
CurCompName
CurLangID
The language ID of the language being used in the Main Menu of the current
session.
This constant is used for
compatibility with queries
written in Epicor 9 after
they were migrated or
imported into Epicor ERP
Version 10.
When building a new BAQ,
use the CurrentLanguageID
constant.
102
CurrentCompany
CurrentCompanyName
CurrentEmployeeID
3.1.400
BAQ Constant
Description
CurrentLanguageID
The language ID of the language being used in the Main Menu of the current
session.
CurrentPlant
CurrentTime
CurrentUserID
Day
DayOfWeek
DefUM
DefaultUM
DesignMode
EmployeeID
FirstDayOfMonth
FirstDayOfNextMonth
FirstDayOfNextWeek
FirstDayOfPrevMonth
FirstDayOfPrevWeek
FirstDayOfWeek
GlobalSecurityManager
LanguageID
The language ID of the language being used in the Main Menu of the current
session.
This constant is used for
compatibility with queries
written in Epicor 9 after
they were migrated or
imported into Epicor ERP
Version 10.
When building a new BAQ,
use the CurrentLanguageID
constant.
3.1.400
LastDayOfMonth
LastDayOfNextMonth
103
BAQ Constant
Description
LastDayOfNextWeek
LastDayOfPrevMonth
LastDayOfPrevWeek
LastDayOfWeek
MobileConnect
Month
PlantID
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
Today
Tomorrow
VersionString
Displays the ICE framework assemblies version of the current product. For
example, 3.0.5.0.
Week
WorkstationDescription
WorkstationID
Year
Yesterday
104
3.1.400
To access the Editor, on the Display Fields > Column Select sheet, click the Field Attributes Editor button.
In the Editor window, all columns you selected for display are presented in the Tree View on the left. When you
select a field, the grid displays all attributes for that field. These can be:
Default attributes specified in the system. You can accept the default state or modify these attributes as
needed.
Custom field attributes you define for the query.
The default attributes do not display for:
Calculated Fields
Fields from Inner SubQueries
External BAQs
2. Notice there are two field properties you can modify directly on the Column Select grid - Label and Format.
In this example, accept the default values on this grid.
3. Click the Field Attributes Editor button.
3.1.400
105
4. In the Editor, all the columns you selected for display in the Tree View.
5. In the grid, default (system) attributes of the currently selected field display. The attributes in the default
state are grayed out and cannot be removed from the grid.
The default attributes do not display for:
Calculated Fields
Fields from Inner SubQueries
External BAQs
6. In this example, you override the default Caption and Format properties by modifying the corresponding
entries in Value column. Notice after property is changed, the corresponding Override check box becomes
selected, indicating the default value has changed for the current BAQ.
106
3.1.400
If you need to revert the attribute to its original state, you delete the overridden attribute and exit the
Editor window. When you launch the Editor again, the attribute is again set to its original state and the
corresponding check box becomes clear again.
7. Apart from modifying default field attributes, you can create custom ones. To do so, click New.
3.1.400
107
8. The new Attribute record is created. From the list, you can select one of the predefined attribute types, or,
you can enter the name of your choice.
Custom attribute names are not case sensitive. Be sure to enter unique names when defining custom
attributes for a SubQuery. Attributes are specific to each table and SubQuery. For example, if your BAQ is
made of two SubQueries referencing the same DB table, different field attributes can be specified for each
SubQuery.
For more info on the list of predefined attributes, review the Extended Property Maintenance topics within
the Application Help.
9. In this example, you create a custom attribute for a user-defined field. Similarly, you can create another
custom attributes you need to use within the current BAQ.
108
3.1.400
11. Exit the Editor. Notice the Label (Caption) and Format properties you modified for the Customer ID column
display on the grid.
3.1.400
109
110
3.1.400
2. In this example, a filter on the table is applied to only retrieve records for parts 1032x073 and 1032KNUT.
3. For the Display Column(s), select the PartBin_WarehouseCode and PartBin__PartNum columns.
3.1.400
111
4. Also, create a calculated field that summarizes on-hand quantities of selected parts.
Use the following calculation:
sum( PartBin.OnhandQty )
5. Now access the Advanced Group By Clause Editor by clicking the button.
Similar to the 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 and dropping them
onto the editor window's Expression Editor field.
For the complete list of predefined functions, operators, and BAQ constants, see the Application Help topics.
6. Click Add Row to create a new expression.
112
3.1.400
7. 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
ROLLUP
Description
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.
As a 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
GROUPING
SETS
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>.
As a 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.
Specifies multiple groupings of data in one query. Only the specified groups are aggregated
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.
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
3.1.400
113
8. In this example, double-click the ROLLUP function. Place you cursor in the middle of empty brackets. For
Group By expression fields, double-click both the PartBin.WarehouseCode and PartBin.PartNum fields,
separated by a comma.
The Group By expression should now read:
ROLLUP( PartBin.WarehouseCode, PartBin.PartNum )
9. Click OK to exit the editor.
10. Click the Test button to retrieve the BAQ results.
11. Notice the total values are summarized by each warehouse and part (aggregate rows), sub-totals rows for
each warehouse with the grand total value displaying at the bottom.
12. Notice how BAQ results change when GROUPPING SETS function is used to construct the GROUP BY clause.
GROUPING SETS( PartBin.WarehouseCode, PartBin.PartNum )
114
3.1.400
3.1.400
115
CUBE outputs a grouping for all permutations of expressions in the composite element list.
The Advanced Data Aggregation case study found at the end of this chapter shows more complex
scenario on how to aggregate results from multiple tables.
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 fails 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.
116
3.1.400
2. Click the Right Arrow button or drag and drop the column names to the right pane.
The columns are added to the Sort By field.
3. If you need, use the Up and Down Arrow buttons to change the sorting order.
3.1.400
117
4. To control if data should be sorted in ascending or descending order, double-click 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.
6. Once finished, click Save.
7. When the BAQ executes, the results are sorted.
118
3.1.400
SubQuery Options
Use the SubQuery Options sheet to define subquery parameters.
A subquery is a query that is nested inside the SELECT statement, or inside another subquery. A subquery can
be used anywhere an expression is allowed. Each Business Activity Query can contain one main subquery, where
Type=TopLevel, and several subqueries of different types to indicate how they correlate with each other.
Subqueries give different advantages for query design, including:
Support of widely used query criteria, such as IN ({inner subquery}) or EXISTS ({inner subquery})
Using common table expressions (CTE), including CTE with recursion and UNION ALL, for querying hierarchical
data
Using CTE and inner subquery in the FROM clause and joins
Using set operations, like UNION, UNION ALL, EXCEPT, and INTERCEPT
The above set operators are the methods of combining
several result sets. You can create one TopLevel subquery
and combine its result with some other subqueries of this
subquery type, using these SQL standard keywords.
By default, a simple query contains only one subquery with the following attributes:
Field
Value
Name
SubQuery1
Type
TopLevel
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.
3.1.400
119
5. In the Result Set Rows field, select how data displays in the subquery results set.
The table below lists the available options:
120
Keyword
Description
All
Default value; the SELECT ALL returns all data without restriction.
Distinct
SELECT DISTINCT specifies that only unique rows can display in the result set.
3.1.400
Keyword
Description
Top
DistinctTop
SELECT DISTINCT TOP corresponds to using DISTINCT and TOP clauses simultaneously.
The query results set contains top unique rows.
6. When the 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.
TOP as well as DISTINCT TOP cannot be combined with
OFFSET and FETCH in the same query expression.
7. In the Rows Number field, enter the number of rows or percent the query results set should return. You
can, for example, have the query return the list of 50 latest quotes for a review.
8. If you select In Percent, the top percent of rows specified in the Rows Number field is 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.
Only select this option in SELECT statements and only if
the ORDER BY clause is specified.
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.
3.1.400
121
11. The value you enter in the Fetch field specifies the number of rows to return after processing the OFFSET
clause.
The OFFSET/FETCH rowcount expression can be any
arithmetic, constant, or parameter expression that returns
an integer value.
The following limitations exist:
Using OFFSET/FETCH requires MS SQL Server 2012 or later.
ORDER BY is mandatory to use the OFFSET and FETCH clause.
OFFSET is mandatory with FETCH. You can never use ORDER BY FETCH.
OFFSET and FETCH cannot be combined with TOP/DISTINCT TOP in the same query expression.
Example You can construct a BAQ against the table of
all employees. By entering 5 in the Offset field, the first
five rows from the sorted result set are skipped. By
entering 10 in the Fetch field, the BAQ returns next 10
rows from the employees table. The resulting query syntax
looks as follows:
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:
122
3.1.400
Description
TopLevel
Default value for a simple query; each BAQ can contain one main TopLevel subquery.
Union
Selects related information from two tables, much like JOIN. However, when using
UNION, all selected columns need to be of the same data type. With UNION, only distinct
values are selected.
UnionAll
3.1.400
123
Type
Description
Intersect
Returns the results of two or more selected queries. However, it only returns the rows
selected by all queries. If a record exists in one query and not in the other, it is 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 defined
within the execution scope of a single SELECT (or may serve as a subquery, instead of
SELECT).
Common use of CTE is to query hierarchical data. Returning hierarchical data is 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 subcomponents or may be
components of other parents.
InnerSubQuery Usually added to 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 the SELECT statement but do not know the exact value.
When connecting subqueries using UNION, UNION ALL,
EXCEPT, and INTERSECT, it is necessary to define the same
number and type of display fields in both the subqueries.
Field labels may be different. If this condition is not met,
the BAQ fails on execution. For more information, review
the Select Columns - Set Operator Type SubQueries
topic discussed before.
5. In the Result Set Rows field, select how data displays in the subquery results set.
For more information on the Type and Result Set Rows options, review the previous Define Main SubQuery
topic.
6. Navigate to the Query Builder > Phrase Build sheet.
124
3.1.400
7. Add table(s) you need to construct the subquery. Use the techniques defined in the Phrase Build topics to
create the BAQ.
Example You can, for example, create links between
tables and subqueries, use various operators, reference
subqueries when filtering data or creating calculated fields,
and so on.
3.1.400
125
12. Navigate to the Analyze sheet and verify the syntax is OK and the BAQ returns expected data.
The Case Studies section at the end of the chapter
provides several step-by-step examples on how to create
BAQs with multiple SubQueries.
126
3.1.400
3.1.400
127
2. Right-click any of the selected items to open the context menu and select Move to SubQuery.
3. On the Move Item(s) To SubQuery window, you can do the following:
a. Move the selected item(s) to another SubQuery (other than current).
To do so, select the Move To Existing SubQuery option and highlight the SubQuery where you want
to move the selected item(s).
b. Move the selected item(s) to a new SubQuery.
To do so, select the Create New SubQuery option and enter the following information:
In the Name field, accept the default SubQuery name or enter the name of your choice.
From the Type drop-down list, select what type of SubQuery you want to create. The default option
is InnerSubQuery.
128
3.1.400
4. Click OK.
The BAQ Designer switches to the SubQuery you selected. The tables and SubQueries you selected for
transfer display on the canvas, including their relations.
The move operation changes the SubQuery identifier for
all tables, relations and relation fields, selected fields, sort
fields, criteria fields and function call parameters.
However, this process does not parse any expressions like
Calculated fields, advanced GroupBy expressions or
expressions on the right side of criteria. If this is the case,
manual adjustment could be required after the move
operation is performed.
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 a 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:
1. Navigate to the Query Builder > SubQuery List sheet.
The parameters of subqueries in the grid display in the
read-only mode. For more information on each of these
fields, review the SubQuery Options topic.
2. To create a new subquery, click the New SubQuery button. You must then define its main parameters on
the SubQuery Options list.
3. To remove the subquery from the BAQ, click Remove SubQuery.
3.1.400
129
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 parentheses to group SubQueries and create the following query constructions:
Addition of Union SubQueries to InnerSubQueries.
Grouping of Set-Operator SubQueries.
Note when a group for an inner SubQuery is created, the field mapping is shown using this first inner
SubQuery:
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
7. Once finished, click Save to refresh the BAQ definition.
130
3.1.400
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
This program is not available in Epicor Web Access.
1. Use the Detail sheet to find and select the user record you need.
3.1.400
131
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.
132
3.1.400
2. Define the main options for your updatable query. Navigate to the Update > General Properties sheet.
3. Select the Allow New Record check box to indicate users can add new records through this updatable
BAQ.
When this check box is clear, users can only update existing records.
4. If you wish, specify the 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. Make sure it identifies the purpose of
the new record the users create through this updatable BAQ.
3.1.400
133
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, you need to create action
placeholders by clicking the Define Custom Actions button.
7. The Define Custom Action window displays.
134
3.1.400
2. The Alias field displays the specific name for each column within your updatable BAQ TopLevel SubQuery.
3.1.400
135
3. The Data Type field indicates the kind of data contained within the specific field. Available types:
nvarchar - Alphanumeric characters
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
bigint - Used when column contains numbers too large for the Integer data type
4. The Updatable check box indicates users can enter new data within a 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 Initial Expression field to enter a text value that displays in the field before users actually enter
data in 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.
This button becomes enabled when one of the BPM
Update methods is selected on the Update > Update
Processing sheet.
When you set up the interaction of BAQ with Epicor
Service Connect (ESC) this button is disabled.
Be sure to use C# syntax when building an expression.
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 in the following topic.
136
3.1.400
2. Select the Data Type for the parameter from the drop-down list. Available types:
nvarchar
integer
decimal
date
dateTime
bit
uniqueidentifier
3.1.400
137
bigint
3. In the Format field, the default format for this Data Type displays.
If you need, you can edit this value. Make 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.
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 in the
drop-down list.
6. If you select the Common Editor option from the Editor Type drop-down list, the Editor Default field
becomes active. 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 is used to perform field level validation before proposed changes to the field are committed or to perform
additional updates after the field value changes.
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 return the data from the specific field you define. For more information on quick searches,
review the Quick Search section within the Searches chapter.
9. If you select the DropDown List option from the Editor Type drop-down list, the Data from field becomes
active. Use the options from this drop-down list to indicate the source from which the data on this list
populates. Available options:
Option
Custom Values
Description
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 sent 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.
138
3.1.400
Option
Description
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 that 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.
11. To exit this window, click Close.
Update Processing
In order for your updatable BAQ (uBAQ) 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 the
Business Activity Query Designer.
This method is set by default for external uBAQs.
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.1.400
139
3. Use the BPM Update method to perform database updates using the special Business Object method
UpdateExt that simulates the standard way of how application manipulates data within business objects.
This method is set by default for regular (non-external)
uBAQs.
Each of these methods is discussed in the following topics.
140
3.1.400
2. In the Server field, enter the enter Full Domain Name of the server where the Service Connect application
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.
3.1.400
141
5. In the UBAQ Workflow Package field, select the default workflow package where workflows created
from Business Activity Query Designer are placed.
A Workflow Package is the Service Connect equivalent
of a physical folder. It is used to store document processes,
also referred to as workflows in logical groups. A list of
all existing packages displays in the Workflow Packages
node under the Connectivity node of the Epicor Service
Connect Administration Console tree.
At the new workflow creation, you can override this value by selecting a different workflow package than
default.
3. Click the Test Connection button to confirm you can access the specified server.
The ESC logon information used when the query activates is now configured within the BAQ.
142
3.1.400
4. At the beginning of the uBAQ design, the Logon To Service Connect window displays. This window
displays if you click either the New or Configure button.
The credentials you enter on this window are specifically used for the WF Design. These credentials are not
saved with the query, they are only stored until the BAQ Designer form is opened.
On this dialog, you can:
Accept the credentials entered on the Select Epicor Service Connect Server window launched using
the Server button (either company default or custom ones).
Enter custom ESC credentials you want to use while building the query.
5. To create a new workflow for the uBAQ in focus, click the New button.
This button is only enabled if:
Company default ESC server information is entered
on the Company Maintenance > General sheet.
3.1.400
143
6. On the Enter Workflow window, in the Select a Workflow package field, you can either accept the
default workflow package or select a different package where you want to save the new workflow.
7. In the Enter new Workflow name field, type the name of the workflow to be created.
Good practice is that BAQ and workflow are named the same.
8. Click OK.
9. The parameters you specified now display in the read-only field.
10. To select or configure a workflow based on server connection settings, click the Configure button.
144
3.1.400
11. The Server field displays the FQDN name of the specified server where ESC is installed.
12. The Server URL automatically displays the integration service that handles communication between Epicor
ERP and Epicor Service Connect.
By default, the service URL is https://<server name>/BPMIntegrationWcfService/SCIntegrationWcfService.svc
13. If you want to use an existing workflow, in the Workflows tree view, search for and select a workflow you
want to use.
14. The workflow and package you select display in the Chosen Workflow field.
15. When you click Refresh, the list of packages and workflows is refreshed.
16. 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.
17. If you want to create a new workflow, click the Create New button and specify the workflow package and
workflow name.
18. Once complete, in the Select Workflow window, click OK.
3.1.400
145
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.
146
3.1.400
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.
3.1.400
147
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.
11. When you finish, click Save.
148
3.1.400
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.
3.1.400
149
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.
Make sure the expression you create is written using the
.NET C# syntax. Be aware that no SQL functions and
Operators are applicable on this form. This window is
nearly identical to the Calculated Field Editor. For more
information, review the Create a Calculated Field topic.
10. The Object To Query Column Mapping sheet defines how data is returned to the BAQ from the Business
Object.
150
3.1.400
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.
3.1.400
151
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.
152
3.1.400
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.
3.1.400
153
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.
When you use BPM Update option to perform uBAQ
updates, do not edit #BASE# directives because any
154
3.1.400
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.
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.
BAQ Designer allows testing update operation on records
belonging to current company only.
3.1.400
155
156
3.1.400
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.
This feature is only available for BAQs executed in an MS
SQL database. The SQL Server account used by your Epicor
installation must be provided with the ALTER ANY
CONNECTION and VIEW SERVER STATE permissions to
cancel query execution.
6. To remove the query results and Query Execution Messages, click the Clear Grid button.
3.1.400
157
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.
This feature is only available for BAQs executed in a
MS SQL database.
158
3.1.400
5. The Query Results grid populates with data. You now can test the BAQ to find out if you can update
existing records.
3.1.400
159
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.
9. Click OK to exit the Fields window.
10. The record you updated is now highlighted within the Query Results sheet.
160
3.1.400
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.
This option is only available when you select the Allow
New Record check box on the Update > General Properties
sheet.
14. A blank row displays on the Query Results list. Double-click the empty row.
3.1.400
161
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.
162
3.1.400
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.
If uBAQ supports Multiple Row Update set on the Update
> General Properties, then several rows can be edited
before clicking Update button. Otherwise - only one row
can be edited.
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.
3.1.400
163
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 modify the current query, delete the query, or create a new query.
Be careful if you decide to modify the query: 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 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.
To access the information:
1. Navigate to 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, ShopVision reports,
ad hoc reports, and business intelligence reports. For more information on how to create a dashboard,
review the Dashboards chapter.
164
3.1.400
2. Navigate to 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 with other user accounts - improving the productivity of
searches. For examples of how to use this functionality, review the Searches chapter.
3. Navigate to the Dynamic Report List sheet to review which BAQ reports use the current query.
Use the BAQ Report Designer to turn a Business Activity Query (BAQ) into a report. Through the BAQ Report
Designer, 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, add it to the menu for users
to access. For more information on this functionality, review the BAQ Report Designer chapter.
4. Navigate to 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; define what values from the linked BAQ are used as parameter values. Add parameters to a query
through a criterion you set up within the Business Activity Query Designer. For more information on using
parameters, review the Specified Parameter topic earlier in this chapter.
For a list of all field descriptions used on the Where Used
sheets, refer to the Business Activity Query Where
Used topics within the application help.
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 with the 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 cannot use system queries on the BAQ Search sheet. If
you want to use a system query, create its copy first.
1. Navigate to the BAQ Search sheet.
3.1.400
165
2. The Available Like Columns list contains all the fields you selected for your query on the Query Builder
> Display Fields > Column Select sheet.
3. In this example, the Part_PartNum column is used.
4. First you highlight this column in the list of Available Like Columns and then click the Right Arrow button.
5. The column is moved to the BAQ Search "Like" Columns list.
The list contains the items you move over from the Available Like Columns list. Users searching for
information similar to the data contained in the items in this list can access your BAQ.
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.
7. To test the BAQ Search, launch Part Maintenance.
166
3.1.400
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 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.
3.1.400
167
2. In the Query Search window, click the Search button and select the query that you are going to copy.
3. In this example, select zContactTracker01.
4. Click OK.
5. Notice the System. No Save. In Use icon displays. 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.
168
3.1.400
6. In this example, the system zContactTracker01 query is used on 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.
3.1.400
169
You can now add tables, new display fields, calculated columns, make the BAQ updatable, and so on to the
copied query.
170
3.1.400
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.
5. For updatable BAQ utilizing events inside Epicor Service Connect workflows, you can select the Export SC
Credentials check box. The ESC credentials used when the BAQ executes are exported along with the BAQ
definition.
6. Click the Export button.
7. The Export process messages field details the results of the export.
8. If the export is successful, the Query export finished with success message displays.
9. Click Close.
3.1.400
171
2. Click the Import File button to find and select the BAQ you wish to pull into the application.
You can import multiple BAQs at once. When searching
for queries, hold Ctrl and select the BAQs you want to
pull into the application. If the query you import already
exists in the database, you are presented with the warning
message, asking whether you want to overwrite the BAQ.
3. Enter the New Query ID. In this example, you import the MyContactQueryRev2 query.
172
3.1.400
This field displays in the read-only mode when you import multiple queries.
4. Select the Show in Designer check box to immediately load this query into the Business Activity Query
Designer program.
This option is disabled when you import multiple queries.
5. Click Import to import the query.
6. The Import process messages field details the results of the export.
7. If you are importing an updatable BAQ configured to utilize events inside ESC workflows, the following
dialogs display. First, on the Select Epicor Service Connect Server window, you are asked to specify BAQ
runtime credentials.
For BAQs of different types, the following two dialogs do
not display.
8. All fields on this form are filled with data coming from the exported uBAQ definition. If the query was
exported without ESC credentials, the Use Company Default Server option is selected by default.
9. Click Test Connection and verify the credentials you chose are valid.
10. Click OK to proceed to the following dialog.
11. Secondly, you are presented with the Logon to Service Connect window.
This window only displays if Show in Designer check box is selected while importing the query.
The credentials you enter on this window are specifically used for the WF Design. These credentials are not
saved with the query, they are only stored until the BAQ Designer form is opened. By default, ESC credentials
you selected on the Select Epicor Service Connect Server window are offered.
3.1.400
173
174
3.1.400
3. The name of the current BAQ owner displays in the Author field.
4. Click the drop-down list to select the new author of the query.
3.1.400
175
5. The new authors 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.
176
3.1.400
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.
4. The querys fields display in the ASP Fields grid.
3.1.400
177
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 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 fields 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 fields 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 users have to enter an exact match (for example, NY) to
provide you with all customers located in New York.
For a list of all Field Search options, refer to the Business
Activity Query Generate ASP topic within the
application help.
11. To create a new .asp filename and path, click the ASP Filename button.
12. The Save As window displays.
178
3.1.400
13. Notice the default location on your application server where files will be generated.
14. Enter a File name for your .asp page.
15. Click Save.
16. You return to the Generate ASP window. Notice the path and filename now appear in the ASP Filename
field.
3.1.400
179
180
3.1.400
By default, these files are generated in C:\EpicorData\WebDeployment folder on your application server.
This folder should be accessible via IIS.
.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 querys 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.
In Epicor ERP installation, these files are found in the
Server\UD directory.
If you expose the page via IIS, are be able to see the query output via internet browser.
3.1.400
181
182
3.1.400
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
Post-processing directives evaluate data that is saved to the database, but is now 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.
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.
3.1.400
183
Define Parameter
Use this option to create 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.
184
3.1.400
The query text contains references to arguments using this format: @arg_name
Example
select * from dbo.PartCOPart as PartCOPart
where PartCOPart.CoRevisionNum = @CustomParameter
This argument reference is replaced by the argument value when the query activates.
You access these parameters on Table Criteria or SubQuery Critera, when you
1. From the Actions menu, select Define Parameters.
3.1.400
185
Execution Settings
Use the 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 table below displays possible execution values you can define.
Execution Setting
Timeout
PageSize
Description
The value in this field specifies the longest time (in seconds) in which a query can run.
Specifying 0 for this option turns off the query governor, and all queries are allowed to
run indefinitely.
The value in this field specifies how many rows per page are retrieved in the result set.
The available values include:
0 - Paging is not used.
Any positive number - Specifies number of rows per page.
186
3.1.400
Execution Setting
PageNum
Description
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
Where
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.
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.
Make sure you reference fields using the BAQ Alias notation in the following format:
TableName_FieldName.
Example WHERE ABCCode_Company
= 'EPIC06'
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.
Make sure you reference fields using the BAQ Alias notation in the following format:
TableName_FieldName.
Example SELECT
ABCCode_ABCCode,
ABCCode_Company
Having
Setting name for statement that appears in the HAVING clause in addition to query
settings.
Make sure you reference fields using the BAQ Alias notation in the following format:
TableName_FieldName.
Example HAVING
ABCCode_StockValPcnt < 90
3.1.400
187
Execution Setting
OrderBy
Description
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).
Make sure you reference fields using the BAQ Alias notation in the following format:
TableName_FieldName.
Example ORDER BY
ABCCode_ABCCode DESC
GroupBy
Setting name for comma-delimited list of fields by which you want to sort query results.
Make sure you reference fields using the BAQ Alias notation in the following format:
TableName_FieldName.
Example GROUP BY
ABCCode_Company
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
dmy (day-month-year)
ymd (year-month-day)
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:
NotSet - No Transaction Isolation specified by the BAQ engine. When the query
executes, the default Transaction Isolation Level specified in the corresponding DB
provider is used. This option is set by default.
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.
188
3.1.400
Execution Setting
queryMaxResultSet
queryTimeOut
Persist in Query
Description
Specifies maximum number of rows that will be returned by the dynamic query.
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.
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.
Within the Epicor Administration
Console > Application Server
Settings, you can define limits that
apply to all BAQs executed by the
application.
For external BAQs, limits can be
specified in the related external
datasource.
User can only specify limits for one
particular query. These limits can
exceed application limits only if the
user, who edits and saves a BAQ, is
a Security Manager. Other users can
set only values that do not exceed
maximum values specified in
Application Server Settings or an
external datasource.
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.
3.1.400
189
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.
By default, the file is named using the following format: <QueryID>.sqlplan
190
3.1.400
3. Click Save.
4. To the informational message, click OK.
5. Once the file is saved, open it using the SQL Server Management Studio for further analysis.
For more information, refer to the available msdn
documentation.
3.1.400
191
192
3.1.400
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.
For more information on creating schedules, review the
System Agent Maintenance topics within the application
help.
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.
3.1.400
193
5. For the BAQ Query Max Result Rows field, enter the highest number of rows that can be returned by a
business activity query.
194
3.1.400
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.
When you change the above application server settings,
you will cause the application server to restart. Be sure to
change these settings during a period of the day when
few users are logged into the Epicor application.
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:
3.1.400
Node
Description
QueryID
CompanyID
SQLExecTime
DataFetchTime
PagingMethod
PageNumber
PageSize
TotalTime
TotalRows
195
Node
Description
RowLimitReached
Example
<Op Utc="2013-08-15T08:48:28.9994569Z" act="Ice:BO:DynamicQuery/DynamicQuer
ySvcContract/Execute" dur="20.9593" cli="fe80::35a2:7247:6cab:d0e9%11:53737
" usr="manager" tid="17" pid="11176">
<BAQ QueryID="udfield" />
<BAQ Company="EPIC03" />
<BAQ SQLExecTime="12.2756" />
<BAQ DataFetchTime="3.0597" />
<BAQ PagingMethod="Simple" />
<BAQ PageNumber="1" />
<BAQ PageSize="2" />
<BAQ TotalTime="19.4385" />
<BAQ TotalRows="2" />
</Op>
You can evaluate the server log using the Performance
and Diagnostic Tool. For more information on how to test
the performance of your system, review the Performance
Diagnostic Guide.
196
3.1.400
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).
For more information about creating BAQ zones, review
the Epicor ICE User Experience and Customization Guide.
The Customization Utilities chapter contains a BAQ Zones
section that describes how to create and customize
program interfaces to display these zones.
3.1.400
197
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 totaling 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.
198
3.1.400
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.
3.1.400
199
200
3.1.400
9. The Erp.LaborDtl table displays. Drag and drop it onto the grid. The two tables automatically link.
10. You want to filter the labor data based on a cutoff payroll date. Highlight the Erp.LaborDtl table.
3.1.400
201
202
3.1.400
3.1.400
203
7. Click New.
8. In the Field Name field, enter LaborHrs.
9. From the Data Type list, select decimal. This indicates the field accepts decimal places within its values.
10. You are creating a calculated field that totals each employees 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. In this query, it totals the labor hour values linked to each
shop employee record.
12. In the Fields area, expand the LaborDtl node and double-click LaborHrs.
13. Click Save.
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.
204
3.1.400
18. You are ready to test the query. Navigate to the Analyze sheet.
3.1.400
205
206
3.1.400
3.1.400
207
6. Search for and place the Erp.LaborHed and Erp.EmpBasic tables on the canvas.
7. These tables have a relation defined in the schema, so they automatically link.
8. You want to filter the employee data based on the employees who are still clocked into the application.
Highlight the Erp.LaborHed table.
9. The Table Criteria sheet automatically displays.
10. Click New. A row appears in the Criteria grid.
208
3.1.400
3.1.400
209
210
3.1.400
8. You want the results to sort by each employees name. Expand the EmpBasic node.
9. Move EmpBasic.Name to the Sort By column.
10. Click Save.
11. You are ready to test the query. Navigate to the Analyze sheet.
3.1.400
211
212
3.1.400
3.1.400
213
214
3.1.400
3.1.400
215
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.
216
3.1.400
3.1.400
217
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.
218
3.1.400
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.
This option is only available when you select the Allow
New Record check box on the Update > General Properties
sheet.
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.
3.1.400
219
15. If you want to save this change to the database, click the Update button.
220
3.1.400
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.
If uBAQ supports Multiple Row Update set on the Update
> General Properties, then several rows can be edited
before clicking Update button. Otherwise - only one row
can be edited.
3.1.400
221
222
3.1.400
6. Search for and place the following tables on the designer canvas:
Erp.OrderHed
Erp.Customer
Erp.ShipTo
7. Now specify relationships between the tables. Accept the default relationship between the Erp.OrderHed
and Erp.Customer tables.
8. When the Ship To customer is selected on the order header, you want to display the information directly
from the Ship To table. To do so, first delete the relationship between the Erp.Customer and Erp.ShipTo
tables.
9. Now click the Add Connection icon.
3.1.400
223
12. On the Table Relationships pane, create new relationship between the two tables using the following
fields:
OrderHed field or any expression
Company
Company
CustNum
CustNum
ShipToNum
ShipToNum
224
3.1.400
2. Select the following fields in this order and move them to the list of Display Column(s).
To easily locate the below fields, you can sort columns alphabetically.
OrderHed_Company
OrderHed_OrderNum
Customer_CustID
Customer_Name
Customer_Address1
Customer_Address2
Customer_City
Customer_State
Customer_Zip
OrderHed_CustNum
OrderHed_BTCustNum
OrderHed_ShipToCustNum
OrderHed_PONum
OrderHed_ShipToNum
ShipTo_Name
3.1.400
225
ShipTo_Address1
ShipTo_Address2
ShipTo_City
ShipTo_State
ShipTo_Zip
OrderHed_NeedByDate
OrderHed_RequestDate
OrderHed_FOB
OrderHed_ShipViaCode
OrderHed_TermsCode
OrderHed_DiscountPercent
3. Notice the Customer and Ship To table fields share the same labels. In order to distinguish between them
on a dashboard, modify the Ship To field labels in the following way:
Alias
Label
ShipTo_Name
ShipTo Name
ShipTo_Address1
ShipTo Address
ShipTo_Address2
ShipTo Address2
ShipTo_City
ShipTo City
ShipTo_State
ShipTo State/Prov
ShipTo_Zip
226
3.1.400
3.1.400
227
OrderHed_TermsCode
OrderHed_DiscountPercent
228
3.1.400
8. The Object To Query Column Mapping sheet defines the opposite mapping, it specifies how data is
returned to the BAQ from the Business Object.
9. Save the query.
3.1.400
229
3. To analyze the client - server activity, launch the Tracing Options Form. In this example, launch the Tracing
Options Form from the Application Bar at the bottom of the Home Page.
230
3.1.400
4. On the Tracing Options Form, select the Enable Trace Logging check box.
By selecting this option, all calls made by the user interface to the server now automatically record within
the tracing log.
5. Click Apply.
6. Navigate back to the Sales Order Entry form. In the Customer field, delete Addison and type Dalton.
Then press Tab.
3.1.400
231
Parameters
<parameter name="iOrderNum"
type="System.Int32"><![CDATA[0]]></parameter>
<parameter name="iCustID"
type="System.String"><![CDATA[DALTON]]></parameter>
<parameter name="cCreditLimitMessage"
type="System.String"><![CDATA[]]></parameter>
<parameter name="lContinue"
type="System.Boolean"><![CDATA[False]]></parameter>
<parameter name="ds" type="SalesOrderDataSet">
ChangeSoldToID
ChangeCustomer
Each Business Object method uses parameters to provide the expected behavior. Notice the above methods
use the same dataset (ds) parameter called SalesOrderDataSet. Later in this workshop, you replicate this
behavior by calling these methods from within a BPM workflow.
232
3.1.400
9. Now examine what happens when you change the default ShipTo location. Launch the Tracing Options
Form again and click Clear Log.
10. Change the ShipTo location to Plant2 and notice the address changes.
3.1.400
233
11. Switch back to the Tracing Options Form and click View.
12. In the log, verify the ChangeShipToID method was called. You can ignore other system methods, if present
in the log. Notice the method again uses a single ds (dataset) parameter called SalesOrderDataSet.
234
MethodName
Parameter
ChangeShipToID
3.1.400
13. The last process you want to track down is selection of the Need By date and automatic assignment of the
Ship By date. Invoke the Tracing Options Form and Clear Log.
3.1.400
235
15. Notice the Need By date you selected becomes the default Ship By date. This DB field is
OrderHed.RequestDate.
This date is used as the default date for all sales order lines.
16. View the Tracing Log. Verify the method that was called this time was ChangeNeedByDate. This method
uses two parameters - ds (dataset) SalesOrderDataSet and a TableName parameter of string type. Notice
the TableName parameter is set to OrderHed.
MethodName
ChangeNeedByDate
Parameters
<parameter name="ds" type="SalesOrderDataSet">
<parameter name="cTableName"
type="System.String"><![CDATA[OrderHed]]></parameter>
236
3.1.400
17. On the Tracing Options Form, clear the Enable Trace Logging check box.
3.1.400
237
238
3.1.400
4. Since you want the uBAQ to perform additional actions after values in certain field change, you need to
specify which fields will raise BPM events. In this example, select the Raise Events check box for the following
fields:
Customer_CustID
OrderHed_ShipToNum
OrderHed_NeedByDate
5. For the Terms Code field, you want to allow users to use a drop-down menu and select one of the available
codes customers will pay for an order.
In the left pane, select OrderHed_TermsCode.
Display Text
Order
1/10
1/10 Net 30
2/10
2/10 Net 30
COD
Cash on Delivery
3.1.400
239
240
3.1.400
3.1.400
241
5. Based on the information you specified on the BPM Update Processing tab, the BAQ Designer generates
the Base Processing directive against Update method. To see the code automatically generated by uBAQ:
6. Expand Ice.EPIC06/SOHeaderUpdate.Update > Base Processing and click on the directive named
##BASE##.
7. Click the Design button.
8. The BPM Workflow Designer displays.
242
3.1.400
New Record option on the Update > General Properties sheet. This directive is also named #BASE# name
and it contains a C# code with field assignments for new rows.
3.1.400
243
244
3.1.400
5. When you build a complex updatable query, a common practise is to test if BPM is able to identify a certain
event was called. This can be done as follows.
In the BPM Workflow Designer, place the Show Message action on the surface below the Start item.
3.1.400
245
246
3.1.400
Test Events
Now verify raising of BPM events works.
1. In the BAQ Designer, navigate to the Analyze sheet.
3.1.400
247
5. To verify raising of events works, in the Customer_CustID field, enter a customer other than current. For
example, enter Dalton, Addison or Barriston.
6. Click U to fire the FieldUpdate method.
7. Notice the Information Message displays and the field that raised the event, in this case, Customer_CustID
is identified.
You will later use this logic to create several branches within the BPM workflow based on which field called
an event.
8. Click OK to the message and close any other potential messages reported by the method.
248
3.1.400
3.1.400
249
13. Since you verified raising of events works, delete the Show Message action.
Remain in the workflow.
250
3.1.400
2. Now configure the Condition. In the pane at the bottom, click New and select the pre-built condition
statement:
The specified argument/variable is equal to the specified expression
3. Click the first specified.
4. Select the fieldName argument.
5. Confirm your selection by clicking OK.
6. Click the second specified parameter.
3.1.400
251
Configure BO Call
By analyzing the Sales Order tracing log, you found out that three methods - OnChangeofSoldToCreditCheck,
ChangeSoldToId and ChangeCustomer are called when a CustomerID is changed. Revisit the Analyze Tracing
Log topic, if needed. Now call these methods from within the workflow. Start the process by configuring the
OnChangeofSoldToCreditCheck method.
1. Place the Invoke BO Method action below the Cust ID? Condition. This action is found in the Callers
category.
252
3.1.400
6. Notice the two in (input) parameters pass data into the method. These are required parameters the method
call expects. In both cases, you will supply this data from the internal ttResults table the uBAQ uses.
7. For the iOrderNum parameter, invoke the Binding drop-down list and select expr: specified expression.
8. Click the link to launch the launch the Specify C# expression window. Use this window to compose an
expression assigned to this parameter.
3.1.400
253
254
3.1.400
13. Now specify the two out (output) parameters which return data from the method call. Business Object
methods do not require any data from the parameters of this direction.
In this example, for both the cCreditLimitMessage and IContinue parameters, select [ignore].
14. Notice the last parameter of this method named ds (dataset). This parameter uses the INPUT-OUTPUT
direction, which indicates the method receives data from this parameter and potentially returns the updated
data into the variable of the same type. Also, notice the required type is SalesOrderTableSet.
It is important to understand that this variable of TableSet
type is not available in the uBAQ at this moment.
Therefore, you need to create a new variable of this type,
so it becomes available for use within the current directive.
15. For the ds SaledOrderTableSet parameter, click Binding and select create new variable.
16. In the Create new variable window, notice the type of variable required by the Sales Order BO defaults
in. In this case, the type is Erp.Tablesets.SalesOrderTableset.
For Name, enter SalesOrderTS.
17. Click OK in both Create New Variable and Setup Method Parameters windows.
18. To identify which method is called through this action, change the Invoke BO Method heading to Credit
Check.
3.1.400
255
256
3.1.400
5. When you construct the query, you can reference both in-memory tables, known by the Business Object,
such as ttResults and standard database tables such as ERP.OrderHed.
As data is currently in the ttResults table, place this table on the canvas.
6. To finalize the query, click the Display Fields tab and select the columns you want to display in the result
set.
3.1.400
257
258
3.1.400
10. From the Table drop-down list, scroll down and select SalesOrderTS.OrderHed.
11. Click OK to close the Select Table window.
12. To complete the action, configure how records are mapped to the in-memory table.
Click the specified mapping link.
3.1.400
259
13. The Setup Table Mapping window displays, presenting all fields available within the SalesOrderTS.OrderHed
variable.
14. Click the Bind Automatically button. As the result, BPM Query display fields with the matching name and
type are automatically mapped to the corresponding target table columns.
15. In the Setup Table Mapping window, click OK.
16. Connect Start to Fill Table By Query.
260
3.1.400
3.1.400
261
262
3.1.400
6. Notice this method uses a single parameter of SalesOrderTableset type. Click Binding and select the previously
created var: SalesOrderTS variable.
7. Click OK to exit the Setup Method Parameters window.
8. Change the Invoke BO Method action heading to Change Sold To.
3.1.400
263
9. Similarly, configure the ChangeCustomer method. Place the Invoke BO Method action below the Change
Sold To action.
10. Click the first specified to launch the Choose BO Method window.
11. Search for and select the Erp.SalesOrder.ChangeCustomer method.
12. Click OK to exit the Choose BO Method dialog.
13. Click specified to launch the Setup Method Parameters window.
264
3.1.400
14. Same as above, this method uses a single parameter of SalesOrderTableset type. Bind this parameter to the
var: SalesOrderTS variable.
15. Click OK to exit the Setup Method Parameters window.
16. Change the Invoke BO Method action heading to Change Customer.
3.1.400
265
266
3.1.400
3.1.400
267
5. As modified data is currently in SalesOrderTS.OrderHed table, place this table on the canvas.
6. You also need to retrieve data back from two additional tables used on the query. Place the following tables
on the canvas:
Erp.Customer
Erp.ShipTo
7. Delete the automatic link between the Erp.Customer and Erp.ShipTo tables.
8. Manually create the relationship between the SalesOrderTS.OrderHed and Erp.Customer tables using
the following fields:
268
SalesOrderTS_OrderHed field
Customer field
Company
Company
CustNum
CustNum
3.1.400
9. Create new relationship between the SalesOrderTS.OrderHed and Erp.ShipTo tables using the following
fields:
3.1.400
SalesOrderTS_OrderHed field
Ship To field
Company
Company
CustNum
CustNum
ShipToNum
ShipToNum
269
10. Click the Display Fields tab and select the following columns to be included in the result set:
SalesOrderTS_OrderHed_Company
SalesOrderTS_OrderHed_OrderNum
SalesOrderTS_OrderHed_CustNum
SalesOrderTS_OrderHed_PONum
SalesOrderTS_OrderHed_ShipToNum
SalesOrderTS_OrderHed_RequestDate
SalesOrderTS_OrderHed_FOB
SalesOrderTS_OrderHed_ShipViaCode
SalesOrderTS_OrderHed_TermsCode
SalesOrderTS_OrderHed_DiscountPercent
SalesOrderTS_OrderHed_NeedByDate
SalesOrderTS_OrderHed_BTCustNum
SalesOrderTS_OrderHed_ShipToCustNum
Customer_CustID
Customer_Name
Customer_Address1
Customer_Address2
Customer_City
Customer_State
Customer_Zip
270
3.1.400
ShipTo_Name
ShipTo_Address1
ShipTo_Address2
ShipTo_City
ShipTo_State
ShipTo_Zip
11. Click OK to close the Compose Query window.
12. Now select the target in-memory table where data from the BPM Query will be inserted. In the Action phrase,
click specified.
3.1.400
271
13. From the Table drop-down list, verify ttResults (queryResultDataSet.Results) defaults in.
14. Click OK to close the window.
15. Now configure how records are mapped to the ttResults table. Click the specified mapping link.
272
3.1.400
16. Click the Bind Automatically button to map fields from the variable to the results table.
17. In the Setup Table Mapping window, click OK to close it.
18. Change the action heading to Update ttResults.
3.1.400
273
19. Connect the Change Customer method call action to Update ttResults.
274
3.1.400
3.1.400
275
9. Connect the Cust ID? False exit point to the Ship To? condition.
10. Recall the method you need to use to replicate the behavior is ChangeShipToID. Place the Invoke BO
Method action below the Ship To? condition.
11. Click the first specified to launch the Choose BO Method window.
12. Search for and select the Erp.SalesOrder.ChangeShipToID method.
13. Click the specified to launch the Setup Method Parameters window.
276
3.1.400
14. For a single parameter used by the method, click Binding and select the previously created SalesOrderTS
variable.
15. Click OK to exit the Setup Method Parameters window.
16. Change the Invoke BO Method action heading to Change Ship To.
3.1.400
277
17. Connect the Ship To? True exit point to the Change Ship To action.
18. Again, you need to send data from the SalesOrderTS variable to the ttResults table. To do so, connect the
Change Ship To action to Update ttResults.
278
3.1.400
9. Connect the Ship To? False exit point to the Need By? condition.
3.1.400
279
10. Recall the method that gets called is ChangeNeedByDate. Place the Invoke BO Method action below the
Need By? condition.
11. Click the first specified to launch the Choose BO Method window.
12. Search for and select the Erp.SalesOrder.ChangeNeedByDate method.
280
3.1.400
14. For the ds (dataset) parameter used by the method, click Binding and select the previously created
SalesOrderTS variable.
15. For the iTableName parameter, invoke the Binding drop-down list and select expr: specified expression.
Recall this parameter requires the OrderHed table name passed in. Create a C# expression; in the Editor
pane, enter "OrderHed".
16. Now that both parameters are configured, click OK to exit the Setup Method Parameters window.
3.1.400
281
17. Change the Invoke BO Method action heading to Change Need By.
18. Connect the Need By? True exit point to the Change Need By action.
19. Send data from the SalesOrderTS variable to the ttResults table. To do so, connect the Change Need By
action to Update ttResults.
282
3.1.400
3.1.400
283
2. Click the Get List button and verify the query retrieves existing order headers.
3. Now test raising of events. Click Get New.
4. Double-click the empty row at the bottom of the Query Results grid to invoke the Fields window.
5. In the Customer_CustID field, enter Dalton and press Tab.
284
3.1.400
3.1.400
285
9. Click the U button and verify the OrderHed_RequestDate automatically fills in.
10. Close the Fields window by clicking OK.
11. Now test if you can create the new sales order record. Click Update and verify the operation succeeds.
286
3.1.400
12. Lastly, test the Ship To location change. Click Get List and double-click the new order line to invoke the
Fields window.
3.1.400
287
13. In the OrderHed_ShipToNum field, enter a non-existent ShipTo location. For example, enter Plant123.
14. Click the U button and verify the Invalid Ship To error message displays.
15. Now enter a valid ShipTo location for the customer Dalton by changing the value to Plant2.
288
3.1.400
16. Click the U button and verify the Field Update operation completes successfully.
17. Exit the Fields window and notice the ShipTo address on the grid is changed.
3.1.400
289
290
3.1.400
3.1.400
291
7. From the list, select the Erp.OrderHed table and drag and drop it onto the canvas in the center pane.
8. Verify the Table Criteria sheet at the bottom is in focus.
9. Click New.
10. From the Field list, select OpenOrder.
11. In the Operation column, verify Equal To (=) defaults.
12. From the Filter Value list, select the specified constant option.
13. Click the word specified.
The Specify Value window displays.
14. In the Value field, enter True and click OK.
This limits the query selection to open orders.
Select Columns
1. Navigate to the Display Fields > Column Select sheet.
292
3.1.400
3.1.400
293
Type
SubQuery2
InnerSubQuery
294
3.1.400
3.1.400
295
Select Columns
1. Navigate to the Display Fields > Column Select sheet.
2. Expand the OrderHed1 node.
3. Select CustNum to add OrderHed1_CustNum to the list of Display Column(s).
4. Select the Group By check box to indicate you want to group closed orders by customer.
5. Click the Calculator icon.
6. Click New.
7. In the Field Name field, enter CountClosed and press Tab.
8. From the Data Type list, select int.
9. In the Editor pane, manually add the calculation that counts all closed orders.
count( * )
10. Click Save and exit the Calculated Field Editor.
296
3.1.400
5. Search for and add the Erp.Customer table onto the canvas in the center pane.
6. Click the SubQueries button to display the list of available SubQueries.
7. Drag and drop both SubQuery1 and SubQuery2 onto the canvas.
8. Click the Add Connection (chain links) icon.
The cursor turns into a cross-hair.
9. Click the Erp.Customer table and drag a line to the SubQuery1 table, then release.
10. Verify the Table Relations sheet at the bottom displays.
3.1.400
297
298
3.1.400
2. Expand the Customer node and move the Name field to the list of Display Column(s).
3. Expand the SubQuery1 node and move the Calculated_CountOpen field to the list of Display Column(s).
4. Expand the SubQuery2 node and move the Calculated_CountClosed field to the list of Display Column(s).
5. Click the Calculator icon.
The Calculated Field Editor window displays.
6. In the Field Name field, enter Total and press Tab.
3.1.400
299
300
3.1.400
2. Click Test.
The BAQ displays open, closed, and total amount of orders per customer.
3.1.400
301
You accomplish this task by creating a BAQ comprised of three SubQueries and combining their results into one
dataset.
302
3.1.400
6. Drag and drop the following tables onto the designer canvas:
Erp.QuoteHed
Erp.Customer
7. Navigate to the Display Fields > Column Select sheet.
3.1.400
303
9. For each of the above columns, select the Group By check box.
10. Click the Calculator icon.
The Calculated Field Editor window displays.
11. Click New and enter these field values:
Field
Value
Field Name
SubQueryName
Data Type
nvarchar
Label
Document Type
Editor pane
'Quotes'
304
3.1.400
Value
Field Name
QuoteSum
Data Type
decimal
Label
Total Value
15. In the Functions area, expand the Aggregate node and double-click Sum(x).
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 )
17. Click Save and exit the Calculated Field Editor.
18. Move the Calculated_SubQueryName column up and make it the first column in the list.
3.1.400
305
306
3.1.400
3.1.400
307
7. Navigate to the Query Builder > Phrase Build sheet and drag and drop 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
By default, the table name defaults to Customer1.
8. Navigate to the Display Fields > Column Select sheet and move the following columns to the Display
Column(s) list:
Column Name
OrderHed_Company
Customer1_Name
OrderHed_OrderNum
OrderHed_OrderDate
308
3.1.400
9. For each of the above columns, select the Group By check box.
10. Click the Calculator icon.
The Calculated Field Editor window displays.
11. Click New and enter these field values:
3.1.400
Field
Value
Field Name
SubQueryName1
Data Type
nvarchar
Label
Document Type
Editor pane
'Orders'
309
310
3.1.400
Field
Value
Field Name
OrderSum
Data Type
decimal
Label
Total Value
15. In the Functions pane, expand the Aggregate node and double-click Sum(x).
16. In the Fields pane, expand the Available tables > OrderHed node and double-click OrderAmt.
Verify the Editor pane displays the following calculation:
sum( OrderHed.OrderAmt )
17. Click Save and exit the Calculated Field Editor.
18. Move the Calculated_SubQueryName1 column up and make it the first column in the list.
3.1.400
311
7. For each of the above columns, select the Group By check box.
8. Click the Calculator icon.
The Calculated Field Editor window displays.
9. Click New and enter these field values:
312
Field
Value
Field Name
SubQueryName2
Data Type
nvarchar
3.1.400
Field
Value
Label
Document Type
Editor pane
'Invoices'
Value
Field Name
InvoiceSum
Data Type
decimal
Label
Total Value
13. In the Functions pane, expand the Aggregate node and double-click Sum(x).
14. In the Fields pane, expand the Available tables > InvcHead node and double-click InvoiceAmt.
Verify the Editor pane displays the following calculation:
sum( InvcHead.InvoiceAmt )
15. Click Save and exit the Calculated Field Editor.
16. Move the Calculated_SubQueryName2 column up and make it the first column in the list.
3.1.400
313
314
3.1.400
3.1.400
315
Field
Operator
Filter Value
Erp.OrderHed
OrderDate
@Date parameter
Erp.QuoteHed
EntryDate
@Date parameter
316
3.1.400
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.
8. In the Total Value header, click the Sigma () icon.
3.1.400
317
318
3.1.400
3.1.400
319
5. Accept the default relation between the tables but for the Join Type, select Right Join.
This eliminates customers who have not placed any orders to appear on the list of query results.
6. In this example, a filter is placed on the Customer table to only retrieve records from Mexico and Canada.
320
3.1.400
7. For the Display Column(s), select the Customer_Country and Customer_CustID columns.
3.1.400
321
8. Now create a calculated field that summarizes the total amount of orders placed by customers. Click the
Calculated Field Editor button.
9. Click New and for the Field Name, enter TotalOrder.
322
3.1.400
3.1.400
323
14. Similar to the 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 and dropping them
onto the editor window's Expression Editor field. Click Add Row to create a new expression.
324
3.1.400
15. 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
ROLLUP
Description
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 a 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 a 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
SETS
Specifies multiple groupings of data in one query. Only the specified groups are aggregated
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
In this example, expand Functions > Group By and double-click the ROLLUP function. This function
generates an output that presents subtotals and totals.
16. For Group By expression fields, from the Customer table, select Customer.Country and Customer.CustID
fields, separated by a comma.
The Group By expression should now read:
ROLLUP( Customer.Country, Customer.CustID )
3.1.400
325
326
3.1.400
4. Accept the default relation between the tables. Same as for orders, for the Join Type, select the Right Join
to eliminate customers for whom no quotes have been created yet.
5. Again, from the Customer table, apply a filter to only retrieve customers from Mexico and Canada.
3.1.400
327
6. Same as before, for the Display Column(s), select the Customer_Country and Customer_CustID columns.
Create another calculated field named Total Quote that summarizes the total amount of quotes placed by
customers. This time, the expression should read:
sum(QuoteHed.QuoteAmt)
328
3.1.400
7. Click the Advanced Group By Clause Editor button to aggregate results for this SubQuery.
8. Create the same ROLLUP expression using the Country and Customer ID columns, separated by a comma.
The Group By expression should read:
ROLLUP( Customer1.Country, Customer1.CustID )
3.1.400
329
330
3.1.400
3.1.400
331
332
3.1.400
6. Click New and enter a Field Name, for example, Cust ID.
3.1.400
333
7. For Data Type and Format, use the default database attributes for this field - nvarchar x(10).
8. Now enter a label, for example, Customer ID.
9. In the Editor pane, type coalesce (). Inside the brackets, place function arguments. In the Fields pane, search
for and select both Customer ID fields from inner SubQueries. Remember to separate parameters by a
comma. The whole expression should read:
coalesce(SubQuery1.Customer_CustID, SubQuery2.Customer1_CustID)
10. Click New and create another calculated field to display values in the Country column. Make sure the
expression looks as follows:
coalesce(SubQuery1.Customer_Country, SubQuery2.Customer1_Country)
334
3.1.400
13. One additional step is required when building this query. Create SubQuery criteria to provide equality of
Customer ID and Country fields. Also, you need build separate conditions to make sure SQL null value in
one field is not equal to null value in another field. These null values will appear in total lines produced by
the ROLLUP aggregation.
The criteria for the TopLevel Subquery should look as follows:
3.1.400
335
2. 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.
3. Now let's test how query results change using the GROUPPING SETS operator. In both inner SubQueries,
modify the Group By expression as follows:
GROUPING SETS( Customer.Country,Customer.CustID )
336
3.1.400
5. Lastly, let's test how BAQ results change when the CUBE function is used to construct the GROUP BY clause.
Modify both expressions as follows:
CUBE( Customer.Country,Customer.CustID )
3.1.400
337
6. Notice the CUBE operator outputs a grouping for all permutations of expressions in the composite element
list.
338
3.1.400
3.1.400
339
Or
Not
Field
Operation
Filter Value
Country
USA constant
Country
CANADA constant
340
3.1.400
12. Move the following columns from the Available Columns area to the Display Column(s) area:
Customer_CustID
Customer_Country
OrderHed_OrderNum
13. Click Save.
14. You are ready to test the query. Navigate to the Analyze sheet.
3.1.400
341
342
3.1.400
3.1.400
343
Or
Not
Field
Operation
Filter Value
Country
GERMANY constant
Country
CANADA constant
344
3.1.400
11. Move the following columns from the Available Columns area to the Display Column(s) area:
Customer1_CustID
Customer1_Country
OrderHed1_OrderNum
12. Click Save.
13. You are ready to test the query. Navigate to the Analyze sheet.
3.1.400
345
346
3.1.400
3.1.400
347
5. Click Test.
6. In this example, the BAQ returns 285 order records from customers based in USA.
The SQL EXCEPT operation is used to combine two SELECT
statements and returns rows from the first SELECT
statement that are not returned by the second SELECT
348
3.1.400
3.1.400
349
350
3.1.400
8. Place the Erp.PartMtl table onto the canvas in the center pane.
9. Click Save.
3.1.400
351
352
3.1.400
Select Columns
1. Navigate to the Display Fields > Column Select sheet.
3.1.400
353
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.
3. Click the Calculator icon to display the Calculated Field Editor.
4. Click New.
354
3.1.400
9. Click New.
3.1.400
355
10. In the Field Name field, enter Ind1 and press Tab.
11. From the Data Type list, select nvarchar.
12. In the Editor pane, enter the following code that calculates the indentation level of subassembly parts:
cast ( substring('........',1 ,(Hierarchy + 1) ) + PartMtl.MtlPartNum
as nvarchar(25))
13. Click Save.
Now you are ready to configure the UnionAll recursive SubQuery.
356
3.1.400
3.1.400
357
For SubQuery2, you use the PartMtl table again, but this time you join it with CTE SubQuery1.
6. Place the Erp.PartMtl table and SubQuery1 on the canvas.
Accept the new Aliases the BAQ creates.
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 (chain links) button.
9. Use the following fields to create an inner join between the tables:
SubQuery1 field
PartMtl1 field
PartMtl_MtlPartNum
PartNum
PartMtl_Company
Company
Select Columns
1. Navigate to the Display Fields > Column Select sheet.
When using SubQueries of the Union, UnionAll, Intersect,
or Except type, the number and the order of the columns
must be the same in all SubQueries.
2. Move the following columns from the Available Columns area to the Display Column(s) area:
PartMtl1_Company
PartMtl1_PartNum
PartMtl1_RevisionNum
358
3.1.400
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.
3. Click the Calculator icon to display the Calculated Field Editor.
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.
3.1.400
359
10. In the Field Name field, enter Ind2 and press Tab.
11. From the Data Type list, select nvarchar.
12. In the Editor pane, enter the following code that calculates the indentation level of subassembly parts.
cast ( substring('........',1 ,(Hierarchy2 + 1) ) + PartMtl1.MtlPartNum
as nvarchar(25))
13. Click Save.
Now you are ready to configure the TopLevel SubQuery.
360
3.1.400
In the TopLevel SubQuery3, you display data from the CTE SubQuery1.
3.1.400
361
6. From the list of SubQueries, select SubQuery1 and place it on the canvas. Accept the new Alias the BAQ
creates.
7. Navigate to the Display Fields > Column Select sheet.
8. Move all the columns from the SubQuery11 to the Display Column(s) area
9. Click Save.
You are now ready to test the query.
362
3.1.400
3.1.400
363
6. To display the hierarchy, group the BAQ results by the BOM Level and Indentation (Ind1) columns.
364
3.1.400
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.
BAQ Combo
Use this customization tool to create a drop-down list which displays information from a selected business activity
query (BAQ).
After you customize the form and draw the BAQCombo, indicate the specific BAQ and the ValueMember column
which holds the data. You then define the DisplayMember column the customization uses to display the data
during run time on the form.
Note you can create updatable BAQs which allow users to enter data directly into a business object. On the
updatable BAQ, you can define one of the updatable columns to use a BAQCombo. Users can then enter data
through this drop-down list.
3.1.400
365
366
3.1.400
3.1.400
367
10. In the Field Name field, enter the name of the field, for which you create the calculation. In this example,
enter CustomerPart.
11. From the Data Type drop-down list, select the data type generated by this calculation. In this example,
select nvarchar.
12. Extend the Format field value to display x(60).
13. For the Label, that displays above this calculated field's column header on the BAQ grid, enter Cust Part.
14. In the Editor pane, create the following calculation:
Customer.CustID + ': ' + OrderDtl.PartNum
15. Click Save and exit the editor.
16. Navigate to the Analyze sheet.
368
3.1.400
17. Click the Test button and verify the BAQ results.
3.1.400
369
370
3.1.400
5. Draw the combo inside the form and enter the following information.
3.1.400
371
372
3.1.400
15. The BAQ combo now displays all BAQ results. You next configure the BAQ to filter the results based on the
customer selected on the Sales Order header.
For more information on how you can customize the Epicor ERP application, see the Customization User
Guide.
3.1.400
373
2. On the Query Builder > Phrase Build sheet, select the Customer table on the canvas.
3. Verify the Table Criteria sheet is selected.
4. Click Add Row.
5. For the criteria Field, select CustID.
6. In the Operation field, verify = (Equals) displays.
7. From the Filter Value drop-down list, select the specified constant option.
8. Click on the specified link to display the Specify a value window.
374
3.1.400
3.1.400
375
376
3.1.400
Another way of using BAQ combos are parent/child user-defined tables, for example UD100 and UD100A.
For example, you can use the EpiRetrieverCombo to select the data from the parent table and bind that
data to a specific table column (Epibinding). You can then use a BAQ Combo and use the Epibinding
markup syntax to filter the query results using the value selected in the EpiRetrieverCombo. For more
information, review the User-Defined Tables topics in the Customization User Guide.
3.1.400
377
If First/Last table modifier was used on any subsequent (child table), then this behaviour can be accomplished
in two ways:
If you want to retrieve one or more fields from a table, create a SubQuery with parent-child tables. Add
column sorting and use the TOP N clause to retrieve number of rows of your choice. You then add reference
fields into Subquery's display fields.
If you want to retrieve a single field from a table, create a SubQuery with a child table. Add Group By
fields involved in relation between parent and child tables. You then add a Calculated field with Min/Max
function against a field to determine the First/Last record you want to retrieve. You then reference this
field in the SubQuery's display fields.
The above techniques are discussed in the following examples.
Example 1
The below legacy query returns the list of all customer along with their latest sales order numbers recorded in
the system. Notice the last table modifier placed on the OrderHed table retrieves the most recent order number.
As the left outer join is used to define relationship between tables, the BAQ also displays customers who have
not yet placed an order.
378
3.1.400
This method shows how to retrieve a single record using the Calculated Field. To get the same results in Epicor
ERP 10:
1. Create a TopLevel SubQuery and place the ErpCustomer table on the canvas.
3.1.400
379
2. Create another SubQuery of InnerSubQuery type and place the OrderHed table (child table) on the canvas.
380
3.1.400
3. Add Group By fields you will use in relation between parent and child tables.
3.1.400
381
5. Switch to the TopLevel SubQuery and place the SubQuery2 on the canvas.
382
3.1.400
3.1.400
383
Example 2
The below legacy query returns the most recent part revision for the selected part. Notice the last table modifier
placed on the PartRev table retrieves the latest revision.
384
3.1.400
3.1.400
385
In this example, learn how to get the same BAQ results in Epicor ERP 10 by sorting data and using the SQL TOP
N clause:
1. In the TopLevel SubQuery, place the Erp.Part table on the canvas and apply the table filter.
386
3.1.400
2. Create another SubQuery of InnerSubQuery type. Place the Erp.Part and Erp.PartRev tables on the canvas.
3.1.400
387
3. For the Erp.Part table, create identical Table Criteria as in the TopLevel SubQuery.
4. Select Inner SubQuery display columns you will later use to create relationships and display data in the
TopLevel SubQuery.
5. Sort Inner SubQuery data by the RevisionNum column in the descending order. This puts the latest revision
at the top of query results.
388
3.1.400
6. Now define the SELECT TOP clause and specify you want to return a single row.
3.1.400
389
7. Switch to the TopLevel SubQuery and place the SubQuery2 on the canvas.
390
3.1.400
3.1.400
391
392
3.1.400
3.1.400
393
4. In the Description field, enter a brief text to describe the purpose of the datasource type.
5. Click Save.
394
3.1.400
3.1.400
395
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.
396
3.1.400
7. If you want this criterion to evaluate a Not criterion value, select the Neg check box.
Example a column NOT IsNull
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.
10. When you finish building the criterion, click Save.
4. In the TableName field, enter a value to limit which tables become available for selection creating a BAQ
using the datasource.
3.1.400
397
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.
Example You can decide to only display tables for a
specific schema, for example, dbo. Another example
would be to hide tables due to security restrictions, for
example to apply a filter on all tables starting with fin%,
gl%, ap% and so on.
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.
398
3.1.400
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.
Example dbo, ice%
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).
Example You can hide a bank account number field for
all tables that exist in the external datasource.
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.
3.1.400
399
Description
Once you select an available .NET provider, use the Configure button to set up Connection Parameters. These
parameters vary based on the selected provider.
Example For SqlClient Data Provider, first select a datasource;
specify a server name and instance name. Then select a
database you want to connect to. If you want to connect to
an external datasource using the Windows security, select Use
Trusted Connection option. This means your current Windows
account 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.
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
400
3.1.400
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.
These artificial keys were introduced to resolve problems with
zero dates and alias lengths and must be entered manually
within the 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;
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.
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.
2. In the Datasource field, enter a unique identifier that best describes the external datasource.
3. In the Description field, enter a description of the external datasource.
3.1.400
401
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.
For iScala integration this button is disabled, as this type
of integration uses the WCF Service. You set up
connection parameters with iScala exclusively on the
Distribution sheet.
8. For example, for SQLOLEDB Data Provider, first enter a Data Source; specify a server name and instance
name.
9. Then enter a Database name you want to connect to.
402
3.1.400
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.
3.1.400
403
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;
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.
404
3.1.400
5. In the Client secret field, enter the password configured in external system for the above user.
For more information on how to integrate Epicor ICE with
external systems, review the available ICE Extend
documentation found on EpicWeb.
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.
Example You limit the query to return maximum of 500
rows.
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.
Example By entering 180 in the field you indicate the
database server may attempt to execute queries for
maximum of 3 minutes. After this period the process is
terminated and the user launching the query receives an
error message.
Query Limits apply to all external queries executed by the
selected datasource regardless of the Datasource Type it
uses.
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:
1. Search for and select datasource(s) you want to export.
2. From the Actions menu, click Export Datasources.
3.1.400
405
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.
5. Click Export to File.
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:
406
3.1.400
3.1.400
407
408
3.1.400
5. To configure 64bit ODBC datasources, call ODBC Data Source Administrator tool using this command line:
%windir%\system32\odbcad32.exe
3.1.400
409
6. In ERP10/ICE3 application pool, for Enable 32-Bit Applications property, select False.
410
3.1.400
3.1.400
411
2. In the Sample Datasource field, select an external datasource associated with the selected datasource type,
for which you want to create metadata.
External datasource provides connection to an external
database system. Each datasource must be assigned to
an existing datasource type.
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.
6. In this example, select the DimCustomer table.
7. In the External Tables window, click OK.
412
3.1.400
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.
3.1.400
413
414
3.1.400
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.
11. Once complete, click Save.
3.1.400
415
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.
Only the datasources you enable become available for
selection in External BAQ Designer.
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
416
3.1.400
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.
9. Once complete, click Save.
3.1.400
417
5. If you want to update the external database using this query, select the Updatable check box.
Global and Cross-Company functionality is supported
in External BAQs.
6. In the External Datasource name field, select an external datasource available for the current company.
7. Click Test Connection to verify your connection to an external database is established.
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 the Business Activity Queries
chapter.
418
3.1.400
3.1.400
419
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.
420
3.1.400
5. On the Filter sheet, click the Part button to search for and select a part or group of parts.
6. The selected parts display in the Part List.
7. Return to the Selection sheet.
3.1.400
421
8. The Filter Summary section displays Some Selected in the text box next to the filtered field.
If you have not selected any records for filtering, the
application assumes all records are selected.
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.
422
3.1.400
3.1.400
423
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
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 opens your BAQ report in the 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.
424
3.1.400
3.1.400
425
4. 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.
If you know the name of the BAQ, you can enter it directly in the BAQ ID field.
5. Enter a Description for the report. In this example, enter BAQ Report - Customer List.
6. Click the BAQ ID button to search for and select the BAQ to use in this report. In this example, choose
zES_Customers.
7. The text entered in the Form Title field displays as the title of the report. In this example, enter Customers
Overview.
8. For SSRS Report, note that CustOV.rdl has been added automatically based on the value in Report ID.
9. Click Save.
10. 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
This program is not available in Epicor Web Access.
426
3.1.400
3.1.400
427
2. The Option Fields sheet automatically displays with a line for the new option.
428
3.1.400
3. Option Field indicates the BAQ Report column on which the option is based. All the columns contained
within the selected BAQ appear on this list, as well as report parameter columns such as
ReportParam_Character01, ReportParam_Number02, ReportParam_Date05, and so on. For this example,
select Customer_State.
4. For FieldLabel, leave the default State/Prov.
FieldLabel is the text that displays next to the option field on the report form.
5. For Compare Operator, leave the default = (Equal To).
6. For Data Type, leave the default nvarchar. This value is based on the data definition of the field selected
in the option field.
7. Click the New button to add one more line for another option.
8. In the line for the new option, for Option Field, select Customer_Name.
9. Change the FieldLabel value to Customer Name.
10. For Compare Operator, leave the default = (Equal To).
11. The Data Type field again defaults to nvarchar.
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 display on the report form.
3.1.400
429
2. On the report form, verify that the option fields that have been added to the form are present.
430
3.1.400
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.
3.1.400
431
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.
432
3.1.400
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.
3.1.400
433
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.
Move Customer_CustID and Customer CreditHold to Values.
434
3.1.400
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.
3.1.400
435
8. The report layout now includes the selected data fields and choices for layout and style.
10. To test your design in Report Builder, verify that you are on the Home tab and click Run.
436
3.1.400
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.
3.1.400
437
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.
438
3.1.400
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.
3.1.400
439
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.
440
3.1.400
Menu Path: System Setup > Security Maintenance > Menu Maintenance
This program is not available in Epicor Web Access.
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.
It is an important standard practice to use a UD prefix
when adding a menu ID. UD stands for User Defined. It
is further recommended that you use UDXXX as shown
in this example and replace XXX with your initials.
3.1.400
441
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.
9. Click Save and click OK if you get a security update message.
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
442
3.1.400
3.1.400
443
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.
444
3.1.400
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.
3.1.400
445
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.
446
3.1.400
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.
3.1.400
447
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.
448
3.1.400
12. You now can add the customization to the application menu. Open Menu Maintenance
Menu Path: System Setup > System Maintenance > Menu Maintenance
This program is not available in Epicor Web Access.
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.
3.1.400
449
13. On the Detail sheet, select the customization from the Customization drop-down list.
14. Click Save on the Standard toolbar.
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.
450
3.1.400
Searches | Chapter 4
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 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.
2. You can also search for sales orders by clicking the Binoculars button on the Standard toolbar.
When you click the search button, the records search program appears. In this example, clicking the Sales Order
button launches the Sales Order Search program.
Default Features
Default features on each search window:
1. The Basic sheet displays all the default options within the search program. These items are the primary fields
you can use to limit the search results.
3.1.400
451
Chapter 4 | Searches
2. Use the Quick Search sheet to find and select a quick search program.
3. The BAQ sheet contains a list of available Business Activity Queries you can use to generate the search
results.
4. The Advanced sheet contains a list of available Advanced Search options created through the Dashboard
program.
5. The Data Tags sheet 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 sheets search options populate with pre-defined values, or the BAQ Search or Quick Search
program displays. Click the Named Search button to create Named Searches.
Named Searches, Quick Searches, BAQ Searches,
Advanced Searches, and Data Tag Searches are explored
later in this chapter.
452
3.1.400
Searches | Chapter 4
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.
15. The Search Options window displays.
3.1.400
453
Chapter 4 | Searches
16. If you want all the available rows to display within the Search Results grid, select the Return All Rows check
box.
17. When you finish defining the search options, click OK.
18. To limit how many rows display within the Search Results grid, 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.
19. When you finish defining the search options, click OK.
454
3.1.400
Searches | Chapter 4
3.1.400
455
Chapter 4 | Searches
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 that improve the
productivity of search results. You can privately restrict quick searches for your own user account or share them
publicly for other user accounts.
A quick search can be the default search program that displays when a search is launched either from the Standard
toolbars Search button or from a specific fields 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 sheet
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.
456
3.1.400
Searches | Chapter 4
3.1.400
457
Chapter 4 | Searches
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.
5. Click Save on the Standard toolbar.
This user can now create and update quick searches throughout the application.
458
3.1.400
Searches | Chapter 4
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.
To learn how to create Business Activity Queries, refer to
the Business Activity Queries chapter. To learn how to use
a Business Activity Query as a search option, refer to the
BAQ Search section later in this chapter.
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.
3.1.400
459
Chapter 4 | Searches
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 Context Default check box to indicate this quick search appears with the main options at the
top of the search input fields context menu.
16. 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.
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.
This functionality only works when the quick search criteria
do not use any Prompt Type values. If one of the criteria
values is Prompt Type, the Validation Only check box is
not available.
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.
460
3.1.400
Searches | Chapter 4
2. The first criterion you create is a check box used for finding serial tracked parts. To do this, click the New
menu.
3. Select New Quick Search Criteria.
4. Now 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, select the Part_TrackSerialNum column.
5. The text you enter in the Caption field displays on the quick search form. In this example, accept the default
value of Track Serial.
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. In this example, select = (Equal
To). 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
3.1.400
461
Chapter 4 | Searches
>= (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 the character expression cannot have any trailing blanks; for example, abc does not match abc
.
When the Condition Value is active, users can enter asterisks (*) as wildcard search values; this indicates
any group of characters works for the search results including a null group of characters. A period (.) can
also be used to indicate 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.
The application uses sort code values to prioritize how it
gathers search results. All uppercase letters sort before
all lowercase letters, so the lowercase records are greater
than the uppercase. For example, a is greater than Z, but
it is less than b.
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. In this example, 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 the 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.
Each quick search must have at least one prompt field.
If you do not have at least one prompt field as a search
option, users will receive an error message when they
attempt to launch your quick search.
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 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. This is an optional value and
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.
462
3.1.400
Searches | Chapter 4
9. If you want this search criterion to ignore null records, select the Filter On Null check box. This causes the
quick search to filter records that have a null value in the selected Criteria Column.
However if you want null records to display, clear this check box; only records that have a blank value display
within the results. For example, if the criterion searches by Customer_State and you clear this check box,
only customer records with blank State fields appear in the search results.
The Filter On Null check box is available when the Criteria
Column is a character field or a datetime field.
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 you use to filter the quick search results
on the Manufactured, Purchased, and Sales Kit part types. To create these radio buttons, from the New
menu, select New Quick Search Criteria.
3.1.400
463
Chapter 4 | Searches
13. Enter the Caption you want to display. In this example, enter Part Type.
14. You want the search results to display the part records that match each radio buttons values. From the
Condition list, select = (Equal To).
15. From the Criteria Type list, select Radio Set.
16. Next you must define the radio buttons that display on the search form. To do this, from the New menu,
select New Quick Search Value Item.
The Value Items grid displays.
17. Enter the Display Member you want to appear next to the radio button. In this example, 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.
To find out the value members used by the database,
launch the Data Dictionary. To learn how to use this
program, review the Business Activity Queries chapter.
19. To create a new row, press <Tab> . 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).
20. When you finish, click Save.
21. You need to create one more search input field that limits the results directly by part number. From the
New menu, select New Quick Search Criteria.
22. Because this search input field filters the results based on part number, from the Criteria Column list, select
Part_PartNum.
464
3.1.400
Searches | Chapter 4
3.1.400
465
Chapter 4 | Searches
2. Your quick search program displays. Use the search input fields to verify the quick search works correctly.
466
3.1.400
Searches | Chapter 4
2. The search program displays. In this example, it is the Part Search program.
3.1.400
467
Chapter 4 | Searches
5. Highlight the quick search you want to use. In this example, you select the SerialTracked quick search.
6. Click the Search button.
7. The quick search program displays.
468
3.1.400
Searches | Chapter 4
2. Click the Quick Search ID button to search for and select the quick search you wish to modify.
3. Select the Context Default check box.
3.1.400
469
Chapter 4 | Searches
4. Click Save.
5. Return to Part Maintenance.
470
3.1.400
Searches | Chapter 4
2. Click the Quick Search ID button to search for and select the quick search you wish to modify.
3. Select the Base Default check box.
4. Click Save.
5. Return to Part Maintenance.
3.1.400
471
Chapter 4 | Searches
472
3.1.400
Searches | Chapter 4
3.1.400
473
Chapter 4 | Searches
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.
3. Click the BAQ Search tab.
474
3.1.400
Searches | Chapter 4
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.
5. Click the Right Blue Arrow button.
3.1.400
475
Chapter 4 | Searches
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.
The sequence in which you select columns for display on
the BAQ search is important. When the BAQ is run, the
application uses the first column that shares the same
LIKE value as the search fields LIKE value to return values.
This can cause unexpected results. For example, if the
search field is Part.PartNum and the first column in the
BAQ sequence that has a Like value is the
GlbPart.GlbPartNum column, the search uses this column
to pull return values. If this LIKE column has no value, the
BAQ Search will return all records which have no value in
this column.
8. Click the Save button on the Standard toolbar to save the query.
476
3.1.400
Searches | Chapter 4
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
1. Click the Sales Order button to launch the Sales Order Search form.
3.1.400
477
Chapter 4 | Searches
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 columns. Similar to the Like
columns used in a BAQ Search, the Advanced Search also uses Like columns; 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
by clicking a search button or from a context menu.
This section of the guide reviews how to access and use an
Advanced Search. For directions on how to create an Advanced
Search, refer to the Dashboards chapter.
478
3.1.400
Searches | Chapter 4
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 use 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.
3.1.400
479
Chapter 4 | Searches
480
3.1.400
Searches | Chapter 4
3.1.400
481
Chapter 4 | Searches
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 a search option you
want from the list.
12. In this example, however, you are defining options for the Basic Search type.
482
3.1.400
Searches | Chapter 4
13. When you select this Search Type, the Basic sheet 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, 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.
15. Click Save.
Each search program has different options on its Basic
sheet. These Basic sheet options only display for you as
an example.
2. Select the Default check box if you want this named search to be the default for the current search program.
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.
3.1.400
483
Chapter 4 | Searches
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.
9. Close the Named Search Options window.
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 programs main sheet; these options are now a sheet at the top of this window.
Each time you launch this search program, it displays using these options.
484
3.1.400
Searches | Chapter 4
3.1.400
485
Chapter 4 | Searches
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.
486
3.1.400
Searches | Chapter 4
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.
3.1.400
487
Chapter 4 | Searches
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.
488
3.1.400
Searches | Chapter 4
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 searchs options display within the Basic tab.
3.1.400
489
Chapter 4 | Searches
490
3.1.400
Searches | Chapter 4
2. Right-click the main field; from the context menu, select Tag Record.
3. The DataTags window displays.
3.1.400
491
Chapter 4 | Searches
4. To add a private data tagone for your use onlyenter 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 tagone that can be used by othersenter 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.
492
3.1.400
Searches | Chapter 4
3.1.400
493
Chapter 4 | Searches
6. Click OK.
494
3.1.400
Searches | Chapter 4
3.1.400
495
Chapter 4 | Searches
496
3.1.400
Searches | Chapter 4
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.1.400
497
Chapter 4 | Searches
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.
8. Click the Search button.
9. The Search Results display.
498
3.1.400
Searches | Chapter 4
10. Select the search results that you want to review and possibly purge.
11. Click OK.
12. You return to the Data Tag Maintenance window.
3.1.400
499
Chapter 4 | Searches
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.
15. From the Actions menu, select Purge Selected.
16. Optionally, you can select Purge All to purge all the tags in the grid.
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.
500
3.1.400
Searches | Chapter 4
3.1.400
501
Chapter 4 | Searches
3. Within the Tools Options group box, select the Can Maintain Predictive Search check box.
4. Click Save on the Standard toolbar.
5. Exit User Account Security Maintenance.
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.
502
3.1.400
Searches | Chapter 4
2. In the Query ID field, enter XXX_CustomerList, where XXX are your initials.
3. In the Description field, enter Customer List Predictive Search.
4. Select the Shared check box.
5. Navigate to the Query Builder > Phrase Builder sheet.
3.1.400
503
Chapter 4 | Searches
504
3.1.400
Searches | Chapter 4
3.1.400
505
Chapter 4 | Searches
12. Click Test and verify the BAQ retrieves the list of customers.
13. Click Save.
14. Exit Business Activity Query Designer.
506
3.1.400
Searches | Chapter 4
3.1.400
507
Chapter 4 | Searches
4. In the Predictive Search field, enter XXX_CustomerList (where XXX are your initials).
5. In the Description field, enter Customer List.
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 Starts With 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.
9. View the options available in the top-right corner that include:
Shared - When selected, the predictive search becomes available for all users within the company.
All Occurrences - When selected, the predictive search becomes available in all occurrences of the
column within other forms (programs) across the Epicor application.
Top X Rows - Used to limit the number of returned rows from the BAQ.
For the purposes of this workshop, do not select any of these options.
10. Click Save.
11. Exit Predictive Search Entry.
508
3.1.400
Searches | Chapter 4
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.
Property
Description
Default Value
<PredictiveSearchKeyPressDelay>
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.
3.1.400
509
Chapter 4 | Searches
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.
For instructions on how to install Enterprise Search, review the
Epicor ERP Installation Guide.
510
3.1.400
Searches | Chapter 4
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 users 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.
6. Click Save on the Standard toolbar.
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.
3.1.400
511
Chapter 4 | Searches
5. The primary records that contain references to the search value display as links.
512
3.1.400
Searches | Chapter 4
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.
3.1.400
513
Chapter 4 | Searches
10. You may need to navigate through the record to locate the search value.
514
3.1.400
Searches | Chapter 4
3.1.400
515
Chapter 4 | Searches
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.
In order to launch Epicor Web Access, your user account
must be modified so that it has Epicor Web Access rights.
You select these rights within User Maintenance.
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.
11. Use the Edit Preferences link to specify the number of search results to display on each page and the
default display mode.
Your preferences load automatically the next time you start the client.
516
3.1.400
Searches | Chapter 4
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)
3.1.400
517
518
3.1.400
3.1.400
519
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.
520
3.1.400
Directive
scope
Company
Specific
Non-Multi-Tenant license
Multi-Tenant license
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
BPM user logged in to the owning
company.
Read-only access for any BPM users
logged in to another company than
owning.
Tenant
Only visible to users with Global Security Manager
Independent If present in the regular installation
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 that define
3.1.400
521
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 fields 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
Directives Maintenance or Data Directives Maintenance to create these directives. These programs are explained
later in this chapter.
522
3.1.400
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.
7. Click Save. This hold type is now available for use.
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
3.1.400
523
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 types 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.
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.
524
3.1.400
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.
3.1.400
525
2. Use the Detail sheet to find and select a specific hold type. In this example, you select the Sales Order hold
type.
526
3.1.400
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.
Only Advanced BPM users can create base processing directives,
so your user account must be defined as a BPM Advanced User.
However, Epicor strongly recommends you do not create base
processing directives. If you change a base method incorrectly,
you can harm the normal function of the application. Work
with a Epicor consultant before you create a base processing
method directive.
For example, you can create a method directive for the Customer.Update method that sends an e-mail to a Sales
Manager when a customers 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
This program is not available in Epicor Web Access.
3.1.400
527
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
This program is not available in Epicor Web Access.
528
3.1.400
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.
You must be a BPM Advanced User to modify pre-processing
and post-processing updatable BAQ method directives with a
limited number of actions. To utilize the whole uBAQ Method
Directives toolset including modifications of base processing
directives, a user must be provided with BAQ Advanced User
rights.
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.1.400
529
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
530
3.1.400
and it contains C# code with field assignments for new row as defined in Initial Expression column defined
on the General Properties.
When you use BPM Update option to perform uBAQ
updates, do not edit #BASE# directives because any
changes will be discarded once the query is saved in BAQ
Designer.
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, Update and RunCustomAction 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
This program is not available in Epicor Web Access.
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.
3.1.400
531
532
3.1.400
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.
If at least one non-empty Base Processing directive is in
effect, the Base Processing directive runs instead of the
Epicor program code.
Epicor strongly recommends you do not create Base
Processing directives. If you change a base method
incorrectly, you can harm the normal function of the
application. This option is mainly included for partners,
consultants, and power users who need to directly modify
the method for major business modifications. Work with
an Epicor consultant before you create a base processing
method directive.
3.1.400
533
After the Pre-Processing directive, the Epicor program code performs its function, or Base Processing directives
are executed.
When a data transaction is about to be applied to the database, In-Transaction directives are executed.
After the Epicor program code or a Base Processing 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.
534
3.1.400
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".
3.1.400
535
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.
10. Click Search.
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.
12. Click OK.
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.
15. If you need, enter a Method Description.
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 directives actions.
536
3.1.400
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.
To use this functionality, your user account must be
defined as a BPM Advanced User. Read the previous BPM
Setup section to learn how to give users these advanced
rights.
19. When you finish defining the primary items on the method directive, click Save on the Standard toolbar.
3.1.400
537
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.
You can export directives for use on other systems. You
can do this only if the directives belong to a group. To
learn how to export directives, read the Export Directives
section in Business Process Management Utilities chapter.
5. The Order field indicates the sequence in which this methods 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.
538
3.1.400
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 about these options, 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.
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.
3.1.400
539
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.
6. The initial point of the BPM workflow is the Start element.
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, presence of DB tables, standard fields and user-defined fields, etc.) correspond to
selected BO method signature. This control is particularly useful for directives imported from previous Epicor
ERP releases.
The Validate function does not check syntax in expressions
or custom code.
540
3.1.400
12. Once you finish, click Save and Exit to return to the respective Directive Maintenance program from which
you called the Designer.
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.
3.1.400
541
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.
542
3.1.400
6. Next, you enter the custom text to describe the purpose of the item.
3.1.400
543
7. When you place the cursor over the element, the memo you created displays.
544
3.1.400
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/Variable Condition, Word In
Argument/Variable Condition and Set Argument/Variable 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.
2. Use your mouse and keyboard to select the items you want. Press Ctrl + C on your keyboard to copy the
highlighted items into the clipboard.
While holding down the Ctrl or Shift key, you can left-click the mouse to select multiple items. Highlighting
the Start item is not needed, this element is not transferred into the target location, even if you select it.
3. Open a directive where you want to paste the items from the clipboard.
You can copy items into:
The currently opened directive.
3.1.400
545
4. Launch BPM Worfklow Designer for the selected directive and press Ctrl + V on your keyboard.
The items are copied on the designer surface. At this stage, complete the workflow as needed. Read the
following topic to learn what rules are applied when you copy and paste workflow elements.
Transmission Rules
This topic provides details on how transfer of workflow items between directives works.
The list of rules includes the following:
You can copy workflow items from all directives, including those where you have read-only access only.
However, when you paste items into the directive without having editing permissions, saving of such directive
is denied.
If links between copied items exist, they are preserved in the target location.
If the target directive already contains items of the same type, numbers of newly added items are increased,
for example, Condition 1, Raise Exception 1. You can rename the newly added items as needed.
For workflow items utilizing custom code, any additional c# Usings or References to assemblies used by the
items are also transferred.
Handling Directive-level variables:
If actions/conditions reference directive-level variables that do not exist in the target location, they are
transferred.
If target directive already contains a variable having the same name but different type, the paste operation
is denied and user is presented with appropriate error message.
546
3.1.400
The exception to this rule are directive-level variables used in structured message actions, such as Show
Message, Raise Exception and Send E-mail. In such cases, the paste operation completes but the source
variable is not transferred.
Handling Epicor Service Connect credentials:
When using company default credentials, these settings are transferred when copy/paste action is done
within the current directive as well as across directives.
When using custom ESC server, the information about the server name, selected workflow and logon
credentials is only transferred within the same directive. When you copy the Call SC Workflow action to
another directive, only the information about the server and selected workflow is transferred. A BPM user
is then supposed to re-enter valid credentials manually.
The following list outlines cases when workflow actions or condition statements can not be transferred:
A workflow item is not supported in the target directive.
A workflow item requires advanced BPM rights.
A workflow item requires a valid BO instance.
Target method signature is different from the source one.
If some of the item settings cannot be transferred, for example, if an item references a simple or table
parameter which is absent in the current method. The exception to this rule are actions utilizing structured
messages - Show Message, Raise Exception and Send E-mail. These actions are pasted into the target
location, they are marked as not configured and should be fixed manually by a BPM user.
If a transferred item references variables, temporary tables or parameters unavailable in the target directive,
the item is transferred and an appropriate error message is shown. The conflicting configuration parameter(s)
of such item is cleared. The workflow element is marked as unconfigured and becomes highlighted with
a red border.
If a user attempts to paste an unsupported condition, or the user is missing the required BPM rights, such
a condition is replaced with a placeholder condition, which displays the default condition statement. To
alert the user, an appropriate error message displays, and the condition is highlighted with a red border.
It is up to the user to fix the condition as needed.
Note: It is not possible to compile an enabled directive containing such a condition, as it will fail validation.
However, this validation error does not stop the Directive Update, BPM Upgrade, Directive Import or uBAQ
Regeneration processes. Instead, it marks the affected directive as Outdated.
Define directive-level variables. You can create simple parameters such as string or decimal, or complex
parameters of TableSet type.
2.
Assign data to variables using the available actions or through a custom code.
3.1.400
547
3.
Use the Invoke BO Method action and map variables to parameters as needed.
4.
If needed, process returned values. Returned values may end up in variables that were mapped to return.
Variables Tab
Typically, if you know what variable type(s) you need for the directive you design, you can create them in advance
using the Variables tab.
This tab is always located in the lower part of the BPM Workflow Designer.
548
3.1.400
By selecting the Choose Type option, you are presented with the Select variable type window. The first
level of hierarchy contains assemblies with TableSets defined inside them. Typically, you select the Contracts
assembly of the BO you want to call, and then select the TableSet type that you need to receive from, or
send to the BO Method you are planning to call.
You can also rename an existing variable, change its type or delete it.
You can not delete a variable already used within a
workflow action or condition.
Using Actions
You can create new variables of required types while you configured the Invoke BO Method, Fill Table By Query
and Update Table By Query actions.
When you specify a parameter Binding, select the create new variable option from the drop-down list.
3.1.400
549
You are presented with the Create new variable window. Notice the variable Type corresponds to the type of
the parameter from which this option was launched.
You typically use this option if, within the workflow preparation
period, you do not know what types of variable you will need
for the directive. This way, you create them on the fly while
you configure the action.
550
3.1.400
Phrase
Method Query Field Changed Condition Method changed the specific field of the designed query from
any to another value
3.1.400
551
Workflow Item
Phrase
Set the specified field of all rows identified by the designed query
to the specific expression with rule
Select an Argument/Variable
This dialog displays when you configure the highlighted parameters of the following phrases:
Workflow Item
Phrase
Argument/Variable Condition
Word In Argument/Variable Condition The specified argument/variable includes the specific text
Only variables of
String type are
available for
selection.
Set Argument/Variable Action
552
3.1.400
Specify C# Expression
If directive-specific variables were created, they are displayed under the Directive variables branch. You can
use them within an expression statement you create.
This dialog displays when you configure the highlighted parameters of the following phrases:
3.1.400
Workflow Item
Phrase
Argument/Variable Condition
Field Condition
Set the specified field of all rows identified by the designed query
to the specific expression with rule
Set the specified field of the changed row to the specific expression
with rule
553
Select Table Field(s) - If directive-specific variables of TableSet type were created and are available for the
Condition or Action you configure, they become available in the table/field selection.
This dialog displays directly when you configure the highlighted parameters of the following phrases:
Workflow Item
Phrase
Field Condition
The specified field of the changed row is equal to the specified expression
Method changed the specific field of the designed query from any to
another value
TableSet types of
variables are available
for selection, when
used in the BPM
Query.
Value of the specific field of the designed query changed from any to
another
TableSet types of
variables are available
for selection, when
used in the BPM
Query.
554
3.1.400
Workflow Item
Phrase
Set the specified field of all rows identified by the designed query to the
specific expression with rule
TableSet types of
variables are available
for selection, when
used in the BPM
Query.
Set the specified field of the changed row to the specific expression with
rule
The enhanced Select Table Field(s) dialog also displays when you configure values queried from related tables
and fields within the below Action templates:
3.1.400
Workflow Item
Phrase
Notification Action
Generate a notification using the profile and key tag for the specified
table based on the designed template
555
Invoke BO Method - When calling Business Object (BO) method from within a directive, you can use variables
to map data to BO's method parameters. For example, you can map an existing TableSet, a simple variable
or other BO call's output.
This dialog displays directly when you configure the highlighted parameters of the following phrase:
556
Workflow Item
Phrase
3.1.400
BPM Info Prompts - During the BPM Form call, BPM runtime stores states of simple arguments, original state
of TableSet arguments, filtered state of TableSet arguments and states of variables of any type. The content
of these items is available for actions/conditions placed after Call BPM Data Form action in the directive flow.
Enter Custom Code - Within the BPM custom code, you can access and modify directive variables.
When modifying values of directive variables within an
asynchronously executed Custom Code Action, these values
become available in this particular action only. Outside of
this action, the original values of directive variables are
preserved.
This dialog displays directly when you configure the highlighted parameters of the following phrase:
3.1.400
Workflow Item
Phrase
557
When you design custom code, you can also use the Variables context menu option to reference variables.
This menu becomes available if at least one directive-level variable has been created for the current directive.
You can reference both simple variable types and complex variable types of TableSet type.
The Variables sub-menu is organized as follows:
First, all variables are sorted alphabetically. When you double-click on a variable of simple type, it gets
inserted into the code using the "this.VariableName" format.
For TableSet type variables, one more sub-level is available. On this list, a variable name is listed first,
followed by the list of tables it contains. When you double-click on a variable name at the top, it again
gets inserted into the code using the "this.VariableName" format. Double-clicking on a table inserts the
reference using the "this.VariableName.TableName" format.
Example this.CustomerVariable,
this.CustomerContainer.ShipTo
Validation
The Validate function controls if variable parameters are set up in the way BPM expects.
Upon a new variable creation or a directive import, the validation checks the following:
Directive-specific variable names must not coincide with the names of:
Parameters and arguments contained in the current method or updatable BAQ
Auto-generated ttTable properties
Other directive-specific variables
Other system-generated properties
558
3.1.400
Callers
Use the items found within the Callers group to invoke BPM Data Form, call Epicor Service Connect workflow,
perform Custom Code Action and Invoke External Method.
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:
Method
Data
Updatable BAQ
All
None
All
3.1.400
559
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
Call SC Workflow
Use this action to perform a call to Epicor Service Connect and to select or create a workflow used as a part of
the directive action.
Using the default parameter, you configure how you want to connect to the ESC server. The following ways are
available:
Using default ESC credentials defined on Company Maintenance > General Settings sheet.
Using custom ESC credentials you can configure for each action.
After you select the connection method, click specified to invoke the Select Workflow window. On this window,
you can do the following:
Select an existing workflow you want to execute from the directive.
Create a new workflow skeleton directly from the Call SC Workflow action. Each new skeleton contains 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 a default workflow package specified in Company Maintenance
or you can select any of the existing workflow packages. You can then edit this workflow directly within the
ESC 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:
Method
Data
Updatable BAQ
All
Standard
All
560
3.1.400
Call the specified Epicor Service Connect Workflow asynchronously with rule
default
Click this link to launch the Select Epicor Service Connect Server window to specify where
Epicor Service Connect is installed. The ESC server and run-time credentials selected on this
window are saved with the directive.
The following options are available:
Use Company Default Server - use this default option to use the ESC server and credentials
specified in Company Maintenance.
Use Specified Server - use this option to specify custom ESC server parameters:
Server - enter the Full Domain Name of the server where the Service Connect application
is installed.
Enter the User and Password for the user account that has rights to access Service
Connect. While the BPM Workflow Designer form is opened, these credentials are
auto-populated for any other Call SC Workflow actions calling the specified server. Once
the designer is closed, this information is removed from the cache.
After you make your selection, click the Test Connection button to confirm you can access the
specified server.
specified
After you select this link, you are first presented with the Logon To Service Connect window.
On this window, you can do the following:
Accept the credentials entered on the Select Epicor Service Connect Server window
(custom or company default).
Enter custom ESC credentials.
Confirm your selection by clicking OK.
The credentials you enter on this window
are specifically used for the workflow
design. These credentials are not saved
with the directive, they are only stored
until the BPM Workflow Designer form is
opened.
When the Select Workflow window displays, you can perform the following actions:
Browse the available workflow packages and select an existing workflow you want to invoke
using the current directive. The package and workflow you select displays in the Chosen
Workflow field.
Refresh the list of available workflow packages and workflows.
Create New workflow - this button brings up the Enter Workflow window.
In the Select a Workflow package list, accept the default workflow package or select
a different package where you want to save the new workflow.
In the Enter new Workflow name field, type the name of the workflow to be created.
Create New button is disabled if you
are connected to an older version of
Service Connect Workflow Web
Service.
3.1.400
561
Use the Advanced button to specify Workflow Context Parameters. The information on
this window is shared between the Business Activity Query and Business Process Management
sub-systems. Specify a server, user account and password that will be required to run an
Epicor Service Connect workflow when the system executes a directive action.
The following read-only information displays on this window:
Server - the server, which you specified when logging on to Service Connect, is displayed
in this field.
Server URL - This field displays the URL of the ESC Integration web service, which runs on
the server you specified when logging on to Service Connect. The integration service provides
methods for a variety of administrative actions in Epicor Service Connect.
By default, the service URL is https://<server
name>/BPMIntegrationWcfService/SCIntegrationWcfService.svc
Chosen Workflow - This field displays the selected ESC package and workflow.
asynchronously
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.
You can use this action with the following Directives Types:
562
Method
Data
Updatable BAQ
All
All
All
3.1.400
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.
You can use this action with the following Directives Types:
Method
Data
Updatable BAQ
All
All
All
3.1.400
563
Synchronously Click this link to toggle between asynchronous and synchronous execution:
Synchronously - The method is called immediately when the action executes.
Asynchronously - The call is queued and executed by the BPM system tasks which are part
of the Epicor ICE Task Agent service running behind the scenes. The system task runner
performs calls to the server every 20 seconds and processes asynchronous actions in the
queue. Users cannot configure this system task.
specified
method
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\Externals 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.
564
3.1.400
Invoke BO Method
Use this action to call Business Object (BO) method from within a directive.
You can use this action with the following Directives Types:
Method
Data
Updatable BAQ
All
None
All
BPM directive is a part of the customization which runs as a part of the call to the BO method initiated by the
Epicor Client, another Business Object or an external software. Within the directive, the BO method exposes its
parameters and if present, also the return value. Method parameters can be either simple parameters such as
string or decimal, or complex parameters of TableSet type. Complex parameters are exposed in the BPM directives
as aliases to the tables inside them.
To configure this action:
Specify the Business Object method you want to call
Configure parameters exposed by the selected BO method. You define what data you want to pass to the
method as well as what to do with the data the call returns. You can use the following input for the parameters:
Directive level variables of the same type as the selected method parameter - simple or TableSet type.
Specified expression - use this option compose an C# expression assigned to the selected parameter.
[ignore] - The method accepts this option for non-mandatory parameters that have the OUT direction.
Use the below statement to configure parameters of this action:
Invoke specified BO method with specified parameters
specified
(BO
Method)
Click this link to launch the Choose BO Method window. Use this dialog window to locate a
specific method within a business object you want to invoke.
Notice you can search for Business Objects belonging to the Product (ERP) or System (ICE) part
of the system.
Once you select the application area, use the Business Object drop-down select the Business
Object for which you want to search the method.
You can narrow down list of search results using the Where Method Name Starts At field.
Click Search and from the Search Results grid, select the method you want to call.
specified
Click this link to launch the Setup Method Parameters window.
(parameters)
The following information display on this window:
Business Object - Displays the name of the selected Business Object.
Method Name - Displays the name of the selected BO method.
3.1.400
565
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.
566
3.1.400
The conditions define when the subsequent elements 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 BPM Workflow Designer, the link text is replaced with the details you
selected.
If you enter more than one condition statement, you can use the And/O r logical operators 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 on 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 topic discusses 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.
Some condition statements are available only for certain types
of directives.
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:
Method
Data
Updatable BAQ
All
All
None
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
3.1.400
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.
567
Variables
exists
specified (table)
Description
Click this link to toggle between two values: exists and doesnt exist. Select exists to
limit the directive to records that have the specified data tag. Select doesnt exist to limit
the directive to records that do not have the specified data tag.
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.
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.
Data
Updatable BAQ
All
All
All
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. Note the BPM query data access is restricted by the current
company the directive runs in.
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.
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.
568
Data
All
Updatable BAQ
Pre-Processing
Base Processing
3.1.400
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.
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.
Data
Updatable BAQ
All
All
All
Variables
Description
specified call
context
Click this link to launch the Select Table Field(s) program. Use this program to specify
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 C# 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:
Method
Data
All
All
Updatable BAQ
Pre-Processing
Base Processing
3.1.400
569
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 methods parameters. For data
directives, you can select a field from the temporary table associated with the directive.
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
(expression)
Click this link to launch the Specify C# 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.
Data
Updatable BAQ
All
All
All
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.
570
Method
Data
Updatable BAQ
All
None
None
Variables
Description
Click this link to launch the Select Business Object program. You can
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.
3.1.400
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:
Method
Data
Updatable BAQ
All
All
All
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.
Data
Updatable BAQ
All
All
All
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.
3.1.400
Data
All
Updatable BAQ
Pre-Processing
Base Processing
571
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.
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.
Data
Updatable BAQ
All
All
All
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.
Data
Updatable BAQ
Post-Processing
Standard
Post-Processing
specified
Click this link to launch the Select a Primary Directive Upon window. Depending on where
this condition is used, select either:
For Method and Updatable BAQ Directives - select a Pre-Processing directive or a
Base-Processing directive that is used for this condition statement.
For Data Directives - select an In-Trasaction directive that is used for this condition
statement.
572
Method
Data
Updatable BAQ
All
All
All
3.1.400
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.
specified (expression) Click this link to launch the Specify C# 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 argument contains the specific text
Use this condition to evaluate if the specific argument includes the specific word expression. If this comparison
evaluates to TRUE, the directives actions are run.
You can use this condition with the following Directives Types:
Method
Data
Updatable BAQ
All
All
All
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.
Please be aware of the following limitation - when the Call
BPM Data Form action precedes this condition within a
workflow, the condition always evaluates to False.
You can use this condition with the following Directives Types:
3.1.400
Method
Data
Updatable BAQ
Post-Processing
None
None
573
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.
On this dialog, the Table field displays table alias(es) used within the query. These refer to
subsets of the corresponding data of temp-table or in-memory table variable that matches
conditions and relations defined in the query.
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. Note the BPM query data access is
restricted by the current company the directive runs in.
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 fields 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:
Method
Data
Updatable BAQ
None
All
None
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.
On this dialog, the Table field displays table alias(es) used within the query. These refer
to subsets of the corresponding data of temp-table or in-memory table variable that
matches conditions and relations defined in the query.
574
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. Note the BPM query data access is
restricted by the current company the directive runs in.
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.
3.1.400
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.
Example You can use a condition statement to check for the
presence of a data tag on a record. This condition statement
could be used as part of a directive that sends you an email
when a record you tagged is modified. Also, actions can be
used to add one or more tags to a record being processed or
remove tags from a record. Adding a tag to a record means a
previously untagged record would appear in your Data Tag
search results after it is updated.
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 modify the business process as you need. BPM Holds extend the regular status holds built into
the application. You can define and evaluate your own hold conditions based on your business workflows.
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:
Method
Data
Updatable BAQ
All
All
None
3.1.400
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.
575
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.
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:
Method
Data
Updatable BAQ
All
All
None
576
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.
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.
3.1.400
Attach Hold
Use this action to place a BPM hold on a specific record.
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:
Method
Data
Updatable BAQ
All
None
None
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
Use this action to remove a hold from a specific record.
3.1.400
577
You can use this action with the following Directives Types:
Method
Data
Updatable BAQ
All
None
None
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, print, e-mail, or fax a report when a data directive executes. You can
automatically print SSRS reports, Crystal reports, Bartender labels, and Outbound EDI documents.
Typically you set up this action to run when a significant database change occurs and want to review the affected
records through a report. Because this report automatically generates, you can distribute the report to key
individuals. For example, you could create a data directive that automatically prints the Job Traveler for released
578
3.1.400
jobs on a printer in your production center. You could also create a data directive that automatically emails Sales
Order Acknowledgments to specific customer contacts.
You can set up the Auto Print action in multiple ways. This action can just run a single task. It can display the
report as a print preview, send the report as an e-mail attachment, send it out as a fax, or print out a hard copy
on a selected client or server printer. However you can set up this action to render multiple outputs. When you
indicate you want to print the report on a client or server printer, you can also set up the action to simultaneously
send the report as an e-mail attachment and/or a fax. Likewise if you select the Email/Fax print action, you can
send out the report both as an e-mail attachment and a fax.
You can further customize how the report auto prints by designing routing rules. Routing rules activate when
the Auto Print action runs, and they help you streamline reporting for specific business needs. They can be
simple rules that define an alternate report style users run when they need to print a report using a unique
format, or complex rules that divide, or break, the report run into multiple dataset partitions which they can
link to separate rendering workflows for generating, printing, previewing, and sending the report output. For
more information, review the Routing Rules section in the application help and the Reporting Tools chapter
in the Implementation User Guide.
To configure the Auto Print action, you first select a report. You then define the print action by selecting a preview,
print, or e-mail/fax option and then configure any parameters for the report. Lastly you specify how the rule
processes row updates.
You can use this action with the following Directives Types:
Method
Data
Updatable BAQ
None
Standard
None
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.
Use this statement to configure the action parameters:
Automatically print specified report with specified options with rule
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. Use this window to first indicate
whether the selected report should run immediately or be scheduled on the queue. You
also define the output format for the report (PDF, XML, Excel, and other options). You then
determine whether the report renders as a print preview, prints on a server or client printer,
or is sent as an email attachment/fax. After you determine the how the report will auto
print, you then either set up the printer options or enter the e-mail/fax parameters.
with rule
3.1.400
Click this link to launch the Execution Rule window. This rule determines processing for
all row updates to this table within a transaction. You select a rule radio button option
such as "For each matching" and then select the temporary table (tt) for the rule.
579
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.
The Change Log action is available in the BPM Workflow
Designer only when the table selected for the data directive
has an assigned ChgLogID in the table's zData.
You can use this action with the following Directives Types:
Method
Data
Updatable BAQ
None
In-Transaction
None
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 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.
580
3.1.400
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:
Method
Data
None
Pre-Processing
Base Processing
Updatable BAQ
Pre-Processing
Base Processing
Use this action when you want to validate data being committed to the DB using the In-Transaction directive
and then use Standard directive to perform required actions after the data is saved to the DB.
You do not select any variables for this action. Instead, you link a Standard Data directive to this In-Transaction
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.
You can use this action with the following Directives Type:
Method
Data
Updatable BAQ
None
In-Transaction
None
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:
3.1.400
Method
Data
Updatable BAQ
All
All
None
581
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.
When you configure a message template, 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. To use this action, the directive must also include an action that sets the corresponding
BPM call context variable. For example you may have an Execute Custom Code action that
includes logic that sets a callContextBpmData or callContextClient variable, which you can
then select as a Call Context substitution.
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.
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.
Scalar Variables - Choose to set up substitution of values using directive-level variables of
simple type. The first five variables you define for the directive are available for selection
directly from the context menu. By clicking More ..., you are presented with the Select and
Argument/Variable window that lists all simple variables including their types.
For more information on how to utilize variables, see the Directive Level Variables section.
Raise Exception
Use this action to display an exception message when this directives 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.
When an exception message is raised through the Raise Exception action or a custom code, the BPM directive
name from which the exception was invoked is included in the exception details. You may use this information
to quicky identify the source directive while troubleshooting a particular BPM behaviour.
You can use this action with the following Directives Types:
582
3.1.400
Method
Data
Updatable BAQ
All
In-Transaction
All
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. You can select one
of the following Severity modes when setting up a message: Information, Warning, Error and Update
Conflict.
Within the message, you can include parameters, simple variables or values queried from related
tables and fields. The following options become available for selection when you click Insert or
right-click in the message to invoke the context menu:
Call Context - Choose to set up substitution of the value in a selected BPM Call Context field.
To use this action, the directive must also include an action that sets the corresponding BPM call
context variable. For example you may have an Execute Custom Code action that includes logic
that sets a callContextBpmData or callContextClient variable, which you can then select as a Call
Context substitution.
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.
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.
Scalar Variables - Choose to set up substitution of values using directive-level variables of simple
type. The first five variables you define for the directive are available for selection directly from
the context menu. By clicking More ..., you are presented with the Select and Argument/Variable
window that lists all simple variables including their types.
For more information on how to utilize variables, see the Directive Level Variables 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.
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.
3.1.400
583
You can use this action with the following Directives Types:
Method
Data
Updatable BAQ
All
Standard
All
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 - The call is queued and executed by the BPM system tasks which are
part of the Epicor ICE Task Agent service running behind the scenes. The system task runner
performs calls to the server every 20 seconds and processes asynchronous actions in the
queue. Users cannot configure this system task.
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.
Within the From, To, CC, Subject, and email body, you can include call context data, simple
variables or values queried from related tables and fields. The following options become
available for selection when you click Insert or right-click in a field and invoke the context
menu:
Call Context - Choose to set up substitution of the value in a selected BPM Call Context
field. To use this action, the directive must also include an action that sets the corresponding
BPM call context variable. For example you may have an Execute Custom Code action that
includes logic that sets a callContextBpmData or callContextClient variable, which you can
then select as a Call Context substitution.
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.
Table Query - You can only use this option when you construct the email body. Select
this option 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.
Scalar Variables - Choose to set up substitution of values using directive-level variables
of simple type. The first five variables you define for the directive are available for selection
directly from the context menu. By clicking More ..., you are presented with the Select
and Argument/Variable window that lists all simple variables including their types.
For more information on how to utilize variables, see the Directive Level Variables section.
Optionally, select the Include shortcut link check box to have a shortcut.sysconfig
configuration file attached to the e-mail. This option is available only when a supporting
alert attachment record has been created for the data directive table.
with rule
584
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
3.1.400
each option in this program. This variable is not visible if the method data transaction does
not support multiple dirty row updates.
Show Message
Use this action to display an informational message that you create.
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:
Method
Data
Updatable BAQ
All
In Transaction
All
3.1.400
585
that sets a callContextBpmData or callContextClient variable, which you can then select as a Call
Context substitution.
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.
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.
Scalar Variables - Choose to set up substitution of values using directive-level variables of simple
type. The first five variables you define for the directive are available for selection directly from
the context menu. By clicking More ..., you are presented with the Select and Argument/Variable
window that lists all simple variables including their types.
For more information on how to utilize variables, see the Directive Level Variables section.
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.
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:
Method
Data
Updatable BAQ
All
All
All
586
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.
3.1.400
specified
Click this link to launch the Specify C# 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, Method Parameters, Directive-Level
Variables 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:
Method
Data
Updatable BAQ
All
All
All
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.
On this dialog, the Table field displays table alias(es) used within the query. These refer to subsets
of the corresponding data of temp-table or in-memory table variable that matches conditions
and relations defined in the query.
3.1.400
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. Note the
BPM query data access is restricted by the current company the directive runs in.
specific
Click this link to launch the Specify C# 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, method parameters, directive-level variables, 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.
587
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:
Method
Data
Updatable BAQ
All
All
All
the changed
row
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 methods parameters.
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.
specific
Click this link to launch the Specify C# expression program. Use this program to compose
an expression used as method argument value. The expression can contain literal values, data
from the current transaction, method parameters, directive-level variables, functions that can
perform calculations and data type conversions. To verify the syntax, use the Check Syntax
button.
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 Argument/Variable
Use this action to set the method argument/variable value to the expression you define.
588
3.1.400
Data
Updatable BAQ
All
All
None
Click this link to launch the Select an Argument program. Use this program to select a method
argument that passes data into the database. The Name column displays the name of the
argument. The Type field displays the .NET classification for each argument.
specified
Click this link to launch the Specify C# expression program. Use this program to compose
an expression used as method argument value. The expression can contain literal values, data
from the current transaction, method parameters, directive-level variables, functions that can
perform calculations and data type conversions. To verify the syntax, use the Check Syntax
button.
3.1.400
589
Directive-level variables - these variables can be created anytime within the BPM workflow design process
using the Variables tab, or, you can create them on the fly while you configure table column mappings.
The number of records added to the selected table is equal to
the number of records returned from the BPM Query.
You can use this action with the following Directives Types:
Method
Data
Updatable BAQ
All
All
None
Click this link to launch the Compose Query program. Use this program to build a BPM Query
used with this action. In addition to standard database tables, the query phrases can be run against
temporary tables to return data you need. Note the BPM query data access is restricted by the
current company the directive runs in.
Use the Display Fields tab to define which columns display in the BPM Query result set and fill
the selected target table.
specified
(table)
Click this link to launch the Select Table window. Use this window to specify a table you want
to fill with data through this action. Number of rows added to the table is equal to the number of
unique rows the BPM query returns.
On this dialog, use the Table field to select either target temporary tables included in the current
method (marked with tt prefix), or directive-level variables of Tableset type.
specified
(mapping)
Click this link to launch the Setup Table Mapping window to configure field assignments within
a target table.
Use the Binding drop-down list to create fields mappings. The list of options includes the following:
[ignore] - default state. Accept this value for all fields where no data assignments should be
performed by this action.
When the table is filled with data, fields with no mappings are assigned their default values.
For example, a field of the string type is assigned an empty string.
Field: [TableName_ColumnName] - Displays the list of columns you selected on the Display
Fields tab within the BPM Query. Use this option to fill target table column rows using rows
retrieved by a BPM Query.
You can use the Bind Automatically option to create automatic column mappings. By selecting
this button, BPM Query display fields with the matching name and type are automatically
mapped to the corresponding target table columns. This function does not overwrite existing
column mappings created manually.
Example The BPM Query uses ttCustomer
and ERP.Customer tables. For the display
columns, you select Customer_CustID and
ttCustomer_CustID columns in this order.
When you use the automatic mapping
option, in the target table ttCustomer
(dsCustomer), the CustID column is mapped
590
3.1.400
3.1.400
591
and the relation specified between the query and the target
table defined on the Setup Table Mapping window.
If the BPM Query returns more than one row matching a target
table row, only the first row found in the query is used to
perform data assignments. The remaining query rows are
ignored. The other way around, if for a target table row, no
matching rows are returned by the query, the row is excluded
from update.
You can use this action with the following Directives Types:
Method
Data
Updatable BAQ
All
All
None
Click this link to launch the Compose Query program. Use this program to build a BPM Query
used with this action. In addition to standard database tables, the query phrases can be run against
temporary tables to return data you need. Note the BPM query data access is restricted by the
current company the directive runs in.
Use the Display Fields tab to define which columns display in the BPM Query result set. You can
then use the data retrieved from the query to update the rows within the target in-memory table.
all rows
Select the state of in-memory table record rows you want to update through this action. The state
of each record row is defined in the RowMod column. Select one of the following row sets:
all rows - default state
added rows
deleted rows
updated rows
added and updated rows
changed rows
unchanged rows
specified
(table)
Click this link to launch the Select Table window. Use this window to specify a single in-memory
table you want to update using this action.
On this dialog, use the Table field to select either target temporary tables included in the current
method (marked with tt prefix), or directive-level variables of Tableset type.
If you need to update more than one table
within a Tableset, for example, OrderHed and
OrderDtl, you must use two Update Table By
Query actions within the workflow.
specified
(mapping)
592
Click this link to launch the Setup Table Mapping window to configure field assignments within
a target table.
3.1.400
Use the Binding drop-down list to create fields mappings. The list of options includes the following:
[ignore] - default state. Accept this value for all fields where no data updates should be
performed by this action. This option preserves the original value of fields.
Field: [TableName_ColumnName] - Use this option to update target table column rows using
rows retrieved by a BPM Query. Note only query columns selected for display and those with
a matching data type as a target column display on the list.
You can use the Bind Automatically option to create automatic column mappings. By selecting
this button, BPM Query display fields with the matching name and type are automatically
mapped to the corresponding target table columns. This function does not overwrite existing
column mappings created manually.
Example The BPM Query uses ttCustomer
and ERP.Customer tables. For the display
columns, you select Customer_CustID and
ttCustomer_CustID columns in this order.
When you use the automatic mapping
option, in the target table ttCustomer
(dsCustomer), the CustID column is mapped
to the first BPM Query matching column, in
this case, field: Customer_CustID.
Create new variable - use this option to create a new directive level variable that has the same
type as the field from which this option was launched.
Existing directive level variables of the same type. Note only simple variable types such as string
display on this list.
Specified expression - Use this option to launch the Specify C# expression window to compose
an expression assigned to this table column.
To remove all column mappings, use the Clear Bindings option. This includes manual and automatic
column mappings created for a table.
3.1.400
593
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
594
3.1.400
email may be sent indicating the transaction was successful, whereas 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.
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 be either a pre-processing or a base processing directive. Typically, first you define
the condition for the directive and then use the Enable Post Directive item within the workflow.
This indicates 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
onto the workflow surface 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 directive.
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 explains a different aspect
of the functionality you can leverage within the BPM module.
3.1.400
595
596
3.1.400
By selecting this option, the Business Objects belonging to the application part of the system become
available for selection.
4. In the Business Object field, select Part.
5. In the Where Method Name Starts At field, enter U.
6. Click Search.
7. In the Search Results grid, select the Update method.
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.
3.1.400
597
598
3.1.400
3.1.400
599
6. In the Condition field, invoke the list and select The specified field of the changed row is equal to the
specified expression.
7. Click the first specified.
600
3.1.400
13. In the Editor text box, enter "P" (this expression stands for Purchased parts, remember to include the
quotation marks).
14. Verify the directive is able to resolve the expression you entered. To do so, click the Check Syntax button.
15. To the Syntax is OK message, click OK.
16. In the Specify C# expression window, click OK to close it.
Each expression is automatically validated after you press
the OK button. If BPM encounters a validation error, a
warning message is presented to the user. If the user
decides to accept a wrongly configured expression, the
corresponding action or condition is marked as invalid.
3.1.400
601
602
3.1.400
9. In the Editor text box, enter "" (quotation marks represent a blank).
10. In the Specify C# Expression window, click OK.
11. The Condition pane should now read:
Operator
3.1.400
Prefix
Condition
None
And
Postfix
603
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.
604
3.1.400
3.1.400
Action Name
Action
Terminate on error
Raise Exception 0
605
You are now ready to extend the workflow by adding a second condition to make the Group field mandatory
for manufactured or kit parts.
606
3.1.400
2. Create a connection between the False exit point of the first Condition and any entry point of the second
Condition.
3. In the workflow, click the newly added Condition item.
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.
6. Click the first specified.
7. In the Table field, verify ttPart (ds.Part) displays.
8. In the Fields search box, enter type.
9. From the list of available fields, select the TypeCode check box.
10. Click OK.
11. At the end of the Condition field, click specified.
3.1.400
607
12. In the Editor text box, enter "M" for (Manufactured, including the quotations).
13. In the Specify C# expression window, click OK.
608
3.1.400
3.1.400
609
10. In the Editor text box, enter "K" for Sales Kit, including the quotations.
11. In the Specify C# expression window, click OK.
You now extend the condition by adding another line.
610
3.1.400
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.
4. Click the first specified.
5. In the Table field, verify ttPart (ds.Part) displays.
6. In the Fields search box, enter prod.
7. Select the ProdCode field name check box.
8. Click OK.
9. At the end of the Condition field, click specified.
3.1.400
611
10. In the Editor text box, enter "" (recall quotation marks represent a blank).
11. In the Specify C# Expression window, click OK.
12. You need the PartTypeCode statements to logically resolve first. To do this, place a open parenthesis in the
Prefix column for the first statement.
612
3.1.400
13. Now in the second statement, place a closing parenthesis in the Postfix column.
This indicates these statements evaluate first. If they resolve to true, the logic next checks the third statement.
14. The Condition pane should now read:
Operator
Prefix
Condition
None
Or
And
Postfix
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.
15. Click Validate and verify BPM reports no errors.
3.1.400
613
614
Action Name
Action
Terminate on error
Raise Exception 0
selected
3.1.400
3.1.400
615
616
3.1.400
8. Click Save.
The part saves with no errors.
9. Remain in Part Maintenance.
3.1.400
617
8. Click Save.
The part now saves with no errors.
618
3.1.400
3.1.400
619
7. Click Save.
8. Exit Hold Type Maintenance.
620
3.1.400
3.1.400
621
9. Click Save.
622
3.1.400
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.
6. In the workflow, click the Condition item.
7. In the Condition pane at the bottom, click the Add Line icon.
3.1.400
623
8. In the Condition field, invoke the list and select The specified field of the changed row is equal to the
specified expression.
9. Click the first specified.
10. In the Table field, verify ttCustomer (ds.Customer) displays.
11. In the Fields search box, enter Sta.
12. From the list of available fields, select the State check box.
13. Click OK.
14. At the end of the Condition field, click specified.
15. In the Editor text box, enter "".
This indicates that directive should execute when the Customer.Update method initiates and the State field
is blank.
16. In the Specify C# expression window, click OK.
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.
624
3.1.400
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.
3. Click Validate and verify the BPM reports no errors.
4. Click Save and Exit to return to Method Directives.
5. Select the Enabled check box.
3.1.400
625
6. Click Save.
626
3.1.400
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.
6. In the workflow, click the Condition 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 of the changed row is equal to the
specified expression.
3.1.400
627
628
3.1.400
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.
3.1.400
629
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.
3. Click Validate and verify the BPM reports no errors.
4. Click Save and Exit to return to Method Directives.
5. Select the Enabled check box.
630
3.1.400
6. Click Save.
3.1.400
631
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.
6. In the workflow, click the Condition item.
7. In the Condition pane at the bottom, click the Add Line icon.
632
3.1.400
8. In the Condition field, invoke the list and select this directive has been enabled from the specified
directive.
9. In the Condition text, click specified.
10. In the Stage field, verify Pre (Pre-Processing directive) is selected.
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.
3. Click the Remove Holds item.
4. Verify the Action displays Remove holds of the specified type.
5. In the Action text, click specified.
6. In the Hold Type field, select Customer Review and click OK.
3.1.400
633
Recall you created this hold type at the beginning of this workshop.
7. Click Validate and verify the BPM reports no errors.
8. Click Save and Exit to return to Method Directives.
9. Select the Enabled check box.
634
3.1.400
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.
3.1.400
635
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.
3. Click the Attach Hold item.
4. Verify the Action displays Attach hold of the specified type.
5. In the Action text, click specified.
6. In the Hold Type field, select Customer Review.
636
3.1.400
7. In the Comment field, enter BPM Hold - Customer.Update and click OK.
8. Click Validate and verify the BPM reports no errors.
9. Click Save and Exit to return to Method Directives.
10. Select the Enabled check box.
3.1.400
637
638
3.1.400
3.1.400
639
640
3.1.400
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.
6. In the workflow, click the Condition 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 hold of the specified type is attached to the
business object.
9. Click specified type is attached to the business object.
10. The Select Business Object window displays.
3.1.400
641
11. Expand the following nodes: Erp.SalesOrder > Objects, linked with the object "Erp.Sales Order" >
via OrderHed.
12. Select the first Erp.Customer object.
13. In the Hold Type field, verify XXX Customer Review (where XXX are your initials) and is attached
populates.
14. In the Select Business Object window, click OK.
This indicates the directive should execute when the MasterUpdate method is called and the customer on
the order is on Customer Review hold.
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.
642
3.1.400
3.1.400
643
644
3.1.400
3.1.400
645
646
3.1.400
3.1.400
647
648
3.1.400
3.1.400
649
650
3.1.400
8. In the Condition field, invoke the list and select The specified field has been changed from any to
another.
9. Click the specified link.
10. In the Table field, verify ttOrderHed displays.
11. From the list of available fields, select the AutoPrintReady check box and click OK.
12. Click the another link.
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.
3.1.400
651
2. Click the Condition's True exit outbound connector connect it to any of the Auto Print entry points.
3. Click the Auto Print workflow element.
4. In the Actions pane, verify Automatically print specified report with specified options with rule
displays.
5. Click the first specified link.
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 Acknowledgment) and click OK.
652
3.1.400
3.1.400
653
654
3.1.400
2. The Sales Order Acknowledgment report uses the OrderList parameter to define which orders are to be
printed or print-previewed. In the OrderList parameter, click the arrow on the right-hand side and select
The specified expression.
3. Click the specified link to launch the Specify C# expression window.
4. From the Available variables, expand ttOrderHed table and double-click the OrderNum column. This
adds ttOrderHedRow.OrderNum into the expression.
5. Within the expression, you want to convert the selected sales order number to a string and pass it as a
parameter to the report. From the list of available Functions, expand the String category and double-click
the x.ToString() function.
6. The Editor pane now displays the following expression:
ttOrderHedRow.OrderNum.ToString()
7. Click OK.
8. The OrderList parameter is now set to the expression you created.
3.1.400
655
656
3.1.400
11. The Execution Rule window displays. Use the options on this window to determine how rows will update
for a selected table.
12. Depending on the table selected for the data directive, different rule options are active. For this example,
select the For each matching radio button option.
13. Now click the table drop-down list to select the temporary table (tt) that will use the execution rule. For
this example, verify the ttOrderHed temporary table displays.
Temporary tables contain the updated rows in memory before they save to the actual database. When
you define a row rule, you determine how the row updates the database when the transaction is complete.
14. Click OK.
15. Click Save and Exit to return to the Data Directives window.
16. Select the Enabled check box to activate the directive.
3.1.400
657
658
3.1.400
2. Enter a Customer, in this example, you create a new order for the customer Dalton.
3. Click New > New Line.
4. On the Lines Detail sheet at the bottom, enter the order details. In this example, enter the following
information:
Field
Value
Part
DSS-1010
Order Quantity
10
3.1.400
659
You could now use Adobe Reader to save the report in a location you need. You can also print out a hard
copy of the report as well.
660
3.1.400
3.1.400
661
662
3.1.400
6. Now create connections between the workflow items. First, connect Start to Condition.
7. Connect the Condition's True outbound exit to the Fill Table By Query action.
8. Lastly, connect the Fill Table By Query action to the Invoke BO Method action.
Configure Condition
For the first task, configure the condition to fire the directive when a city is changed on a customer master record.
1. In the designer canvas, click the Condition item to select it.
3.1.400
663
2. In the Condition pane at the bottom, click the Add Line icon.
3. From the list of available conditions, select the following condition:
The specified field has been changed from any to another
4. Click specified.
5. Verify the Table field displays ttCustomer (ds.Customer).
6. Search for the City field and select it.
7. Click OK to exit the Select Table Field(s) window.
Specify BO Method
Before you configure Fill By Query Table action to prepare data for the BO method call, you can configure the
Invoke BO Method action. First, specify which method you want to call through this action.
1. In the designer canvas, click the Invoke BO Method action to select it.
664
3.1.400
2. In the Actions pane found at the lower portion of the screen, view the Action statement:
Invoke specified BO method with specified parameters
3. Click the first specified link.
4. Since user-defined tables belong to framework part of the application, on the Choose BO Method window,
select System.
3.1.400
665
666
3.1.400
1. In the Invoke BO Method action phrase, click the second specified link to configure what data will be
passed as parameters to this method.
2. Notice the first parameter of this method named ds (dataset). This parameter uses the INPUT-OUTPUT
direction, which indicates the method receives data from this parameter and potentially returns the updated
data into the variable of the same type.
If you know the type of required variable in advance, you
can use the Variables tab within the Designer to create
it. In this example, use another way of creating a directive
level variable directly from within the action where it will
be used.
3.1.400
667
3. For the ds parameter, click the Binding drop-down list and select create new variable.
4. In the Create new variable window, notice the required variable Type defaults in.
In this case, the required type is Ice.Tablesets.UpdExtUD01Tableset.
668
3.1.400
6. Now specify the two in (input) parameters which pass data into the method. These are the required
parameters the method call expects.
3.1.400
669
7. For the continueProcessingOnError parameter, invoke the Binding drop-down list. Notice the two available
options:
create new variable - as discussed in previous steps, you would use this option to create a new variable.
In this case, the simple (scalar) variable of the boolean type would be created.
expr: specified expression - use this option to launch the Specify C# expression window to compose
an expression assigned to this parameter.
8. In this example, create a new expression by selecting the expr: specified expression option.
9. In the Specify C# expression window, in the Editor pane, enter false.
670
3.1.400
3.1.400
671
12. Now specify the two out (output) parameters which return data from the method call.
The Business Object method does not require any data
from the parameters of this direction. You can either
assign these method parameters to variables of the same
type, or, you can select the [ignore] binding if you do not
need to assign any value.
13. In this example, for both the errorsOccured and <return value> parameters, select [ignore].
14. In the Setup Method Parameters window, click OK.
15. In BPM Workflow Designer, click the Variables tab at the bottom. Verify the newly created variable is
present.
672
3.1.400
You can use this tab to create new variables, view existing
ones, rename them, change their types and to delete
them.
3.1.400
673
2. In the Actions pane found at the lower portion of the screen, view the Action statement:
Use the designed query to insert data into the specified table with specified
mapping
3. Click designed to launch the Compose Query window.
4. For the Query Name, enter CustomerOrders.
674
3.1.400
3.1.400
675
9. To finalize the query, click the Display Fields tab and select the columns you want to display in the result
set.
676
3.1.400
2. From the Table drop-down list, scroll down and select UD01LogRecords.UD01.
This indicates you are inserting records into the UD01 table of the UD01LogRecords directive level variable.
3. Click OK.
3.1.400
677
2. The Setup Table Mapping window displays, presenting all fields available within the UD01LogRecords.UD01
table.
678
3.1.400
3. First, examine how automatic field mapping works. By clicking the Bind Automatically button, BPM Query
display fields with the matching name and type are automatically mapped to the corresponding target table
columns.
4. In this example, the ttCustomer_Company column from the BPM Query is automatically mapped to the
Company column of the target user-defined table.
The remaining fields in this example are mapped manually.
5. For the Key1 column, from the Binding drop-down list, select field: ttCustomer_CustID.
6. For the Key2 column, build an expression that stamps the current time. From the Binding drop-down list,
select expr: specified expression.
7. When the Specify C# expression launches, from the Functions list, expand the Date branch and
double-click Now.
This adds the following function to the Editor:
BpmFunc.Now()
3.1.400
679
8. Since the Key2 column expects the string type of data, you must convert the datetime format to string. To
do so, place the cursor right after the brackets.
9. From the Functions list, expand the Conversion branch and double-click x.ToString().
10. The whole expression now reads:
BpmFunc.Now().ToString()
11. Click OK to exit the Editor.
12. For the Key3 column, build an expression to ensure a unique key is created for each sales order that needs
to be updated. In order to create a unique GUID for each row, type the following expression:
System.Guid.NewGuid().ToString()
680
3.1.400
13. For the Key4 column, build an expression that marks all records created by this directive in the UD01 table.
This approach helps you to identify the source of data updates, if needed. For this expression, type the
following in the Editor:
"CustomerCityChange"
14. For the Character01 column, build an expression that alerts the users to update the affected sales orders.
15. In the Editor pane, enter the below expression:
string.Format(
"Attention: Reroute order#{0} from {1} to {2} for customer {3}",
queryRow.OrderHed_OrderNum,
queryRow.Customer_City,
queryRow.ttCustomer_City,
queryRow.ttCustomer_CustID)
16. Note that in this message, parameters inside the brackets are substituted with data returned by the BPM
Query. In the Specify C# expression window, notice the Query row branch is found at the bottom of the
Available variables pane. It displays the list of columns you selected for display when you designed the BPM
Query. This way, you can use the rows returned by the query to make up the expression.
3.1.400
681
17. For the RowMod column found at the bottom of the Columns list, build an expression that marks all records
as added to the table. The expression used in this column looks as follows:
"A"
682
3.1.400
3.1.400
683
684
3.1.400
2. In the City field, delete the existing record and enter Green Bay.
3. Click Save to trigger the BPM directive.
4. Verify the records were added to the UD01 table for the customer Addison. To test the results, you may use
either of the following approaches:
Use Microsoft SQL Server Management Studio to run the query against the Ice.UD01 table.
The query syntax may look as follows:
select * from Ice.UD01 where Key1 = 'Addison'
Directly withing the Epicor ERP application, construct a Business Activity Query against the Ice.UD01
table. Apply a filter on the Key1 field to only retrieve records for the customer Addison.
The UD01 table records should look similar to the following:
3.1.400
685
686
3.1.400
3.1.400
687
688
3.1.400
5. Now create connections between the workflow items. First, connect Start to Condition.
6. Secondly, connect the Condition's True outbound exit to the Update Table By Query action.
Configure Condition
In the previous case study, recall the expression used in the Key4 column marked all rows created by the
Customer.Update directive within the UD01 table using the "CustomerCityChange" expression. You will now
monitor this column and if BPM encounters this expression, this directive will trigger.
This approach helps you to identify the source of data updates, if needed.
1. In the designer canvas, click the Condition item to select it.
3.1.400
689
2. In the Condition pane at the bottom, click the Add Line icon.
3. From the list of available conditions, select the following condition:
The specified field of the changed row is equal to the specified expression
4. First, specify the field to monitor. Click the first specified.
5. Verify the Table field displays ttUD01 (ds.UD01).
6. Search for the Key4 field and select it.
7. Click OK to exit the Select Table Field(s) window.
8. Now, specify you only want to monitor rows being added to the table. Invoke the drop-down list next to
the changed row parameter. From the list, select the added row option.
690
3.1.400
9. Lastly, specify the expression. Click the specified expression link to launch the Specify C# expression
window.
3.1.400
691
692
3.1.400
ttUD01 field
Customer field
Company
Company
Key1
CustID
9. Now select the fields to display in the result set. For this example, you select the existing database records
from the ERP.Customer table. Select the Display Fields sheet.
3.1.400
693
2. Now select the target in-memory table you want to update. In the Action phrase, click specified.
694
3.1.400
2. When the Setup Table Mapping displays, first, set up the relationship between the table and the query.
3.1.400
695
Query
Company
Customer_Company
Key1
Customer_CustID
5. Now define how to map the State field retrieved from the database to the UD01 in-memory table. Notice
that by default, in the Binding column, all fields are set to [ignore]. This state indicates the original values
in the target table columns are left untouched.
6. For the Character02 column, from the Binding drop-down list, select field: Customer_State.
This binds the State value from the existing database record to the table.
Notice that apart from a possibility to bind a field to column retrieved by the query, you also have an option
to create a new directive level variable or create a new expression.
7. Click OK to exit the Setup Table Mapping window.
8. Click Validate and verify the directive reports no errors.
696
3.1.400
3.1.400
697
698
3.1.400
2. Modify the record in the City field. For example, enter Saint Paul.
3. Click Save to trigger the BPM directive.
4. Verify the records were updated into the UD01 table for the customer Dalton. To test the results, you may
use either of the following approaches:
Use Microsoft SQL Server Management Studio to run the query against the Ice.UD01 table.
The query syntax may look as follows:
select * from Ice.UD01 where Key1 = 'Dalton'
Directly withing the Epicor ERP application, construct a Business Activity Query against the Ice.UD01
table. Apply a filter on the Key1 field to retrieve records for the customer Dalton.
The UD01 table records should look similar to the following:
3.1.400
699
5. Notice the Character02 column is populated with the State information from the existing customer record.
To confirm the BPM Query used in this Pre-processing directive retrieves the original value of the State
field, you can perform one more test. In Customer Maintenance, select another customer, but this time,
change the values in both the City and State fields. Save the information and verify the UD01_Character02
column is updated with the original value of the State column, before it was changed.
700
3.1.400
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.
3.1.400
701
2. Click the Down Arrow next to the New button; select New In-Transaction Directive.
3. For the Directive Name, enter Set Part Defaults.
702
3.1.400
7. From the Callers group, click and drag the Execute Custom Code item to the design area.
8. Click on the Start item to display its connection points.
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.
11. The Enter Custom Code window displays.
3.1.400
703
704
3.1.400
3.1.400
705
5. Click Save.
6. Navigate to Part Maintenance.
Menu Path: Material Management > Purchase Management > Setup > Part
706
3.1.400
3.1.400
707
708
3.1.400
Add Fields
Use the Fields sheet to add controls to the form.
1. Click the Fields tab.
3.1.400
709
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.
710
3.1.400
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.
3.1.400
711
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.
712
3.1.400
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.
7. Verify this password by entering it again in the Confirm Password field.
8. Click Save.
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.
3.1.400
713
714
3.1.400
2. Enter a Directive Name. For this example, you enter Alert Manager.
3. Click the Design... button.
4. The BPM Workflow Designer displays.
3.1.400
715
5. From the Callers group, click and drag the Call BPM Data Form item to the design area.
6. Click on the Start item to display its connection points.
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.
9. The Select BPM Data Form window displays.
716
3.1.400
3.1.400
717
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.
718
3.1.400
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.
You can find this address within Company Maintenance.
Launch this program and navigate to the Email and
Reporting tab; the Email Address field contains the value
you need to place in the From field on the email template.
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.
6. Enter the Subject that you want to display in the email.
3.1.400
719
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.
720
3.1.400
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.
14. Click OK.
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.
3.1.400
721
16. Now right-click and select the Call Context > callContext client sub-menu.
17. Select the CurrentUserID option.
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.
722
3.1.400
3.1.400
723
724
3.1.400
3.1.400
725
726
3.1.400
2. Use the Detail sheet to find and select the user account.
3. Click on the Options tab.
4. Select the BPM Advanced User check box.
5. Click Save.
3.1.400
727
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. Heres how you
launch this window within Method Directives Maintenance.
1. Click the Method Code button to find and select the method that you need.
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.
728
3.1.400
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.
6. The BpmArgumentName field displays the name of the argument.
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.
9. To close this program, click OK.
3.1.400
729
730
3.1.400
3.1.400
731
732
3.1.400
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.
3.1.400
733
5. The Output Schema sheet displays the path and filename used to generate the output schemas required
for the Service Connect workflow.
734
3.1.400
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.
3.1.400
735
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)
{
}
}
}
736
3.1.400
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.
3.1.400
737
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(
ref System.String whereClause,
ref System.Int32 pageSize,
ref System.Int32 absolutePage,
ref System.Boolean morePages,
Erp.Tablesets.ABCCodeListTableset result)
{
result.ABCCodeList.RemoveAll(r => r.ABCCode.StartsWith("A"));
}
}
}
6. Build the project and deploy the custom method to the External Storage folder.
You can now select this custom action on a BPM directive.
738
3.1.400
6. Build the project and deploy the custom method to the External Storage folder.
You can now select this custom action on a BPM directive.
3.1.400
739
740
3.1.400
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. Accept the default Synchronous execution of this task.
8. Next select the external assembly you have created and deployed to the External Storage folder. Typically
its directory path is the Server\Customization\Externals location. Click the external link.
9. The Add Reference window displays, presenting all custom assemblies you have built. Select the custom
assembly from the list.
3.1.400
741
13. Notice the two additional columns displayed for your information. The Is Static column displays Yes when
the assembly method is static. Otherwise, No is displayed.
14. The Requires BPM Context column displays Yes if a BPM Context is passed over to the selected external
method. If the method does not utilize a BPM Context data, the column displays No.
Within an external method accessing the BPM context, the BPM context parameter must be declared as
its last parameter. For example:
public void UpdateAsyncWithBpmContext(TipTableset ds, ContextTableset
context)
742
3.1.400
3.1.400
743
744
3.1.400
3.1.400
745
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 the Business Process Management
chapter.
746
3.1.400
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
This program is not available in Epicor Web Access.
To use this program to export a group of method directives:
1. If you want to export all Method Directives created for a particular Business Object, select the Method
Directives by Business Object Option.
3.1.400
747
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.
Note the following rules are applied when a filename or target location are incorrectly specified:
If the BPM export process is unable to recognize the specified file name and directory, a temporary
filename is generated in the default location of a user's My Documents folder.
Example
C:\Users\<UserName>\Documents\tmpF4C9.bpm
If the export location does not exist, but the file name is specified, for example, MyDirective.txt, the
export process will again drop the file in the user's documents folder.
Example
C:\Users\<UserName>\Documents\MyDirective.txt.bpm
If the Export To File location is left clear, the default filename export.bpm is created and placed in the
default location of a user's My Documents folder.
Example
C:\Users\<UserName>\Documents\export.bpm
748
3.1.400
Directive Import
Use the Directive Import program to import a group of exported method directives into your application.
Heres 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
This program is not available in Epicor Web Access.
1. Click the File Name button to find and select the .bpm file you want to import.
3.1.400
749
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.
Each Directive Name is used as a description value and
not as an identifier. If you clear the Replace Existing Group
check box during the import process, you may have
multiple directives with the same Directive Name.
750
3.1.400
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 the Epicor application, the import process validates all methods
for compatibility. If any incompatible directives are found or enabled, directives fail to compile and 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.
3.1.400
751
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.
Multi-Tenant license
752
3.1.400
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.
4. Use this field to change the scope of directives in a group.
The following options are available:
<Unchanged> - Default option; leaves this property unchanged for all directives in a group.
Company Specific - By selecting this option you set the directives to only work in their owning company's
scope.
This option is available to any BPM user. However, a
user must be provided with Advanced BPM rights if
any of the affected directives contains elements
available to advanced users only.
Company Independent - By selecting this option you set the directives to work in all companies on a
regular installation.
3.1.400
753
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.
This option is available to any BPM user logged into
the company owning the directives. However, a user
must be provided with Advanced BPM rights if any of
the affected directives contains elements available to
advanced users only.
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.
The options/values for tenant and multi-tenant features
are only for Epicor hosted environments. Typically you
can ignore these options. Internal Epicor administrators
who need more information should refer to the Epicor
SaaS Installation Guide.
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.
754
3.1.400
Multi-Tenant license
3.1.400
755
756
3.1.400
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.
7. To exit the results window, click Close.
3.1.400
757
Multi-Tenant license
1. If you want to update ESC credentials within a specific group of directives, select a valid Directive Group.
By leaving the default <Any> option selected, ESC credentials within directives become updated, regardless
of a directive group they belong to.
758
3.1.400
2. Within the Current Credentials section, first specify for which ESC server credentials you want to update.
The following options are available for selection in the Server field.
<Company Default> - Use this option to update Call SC Workflow actions using default company ESC
credentials. The default credentials are defined on the Company Maintenance > General Settings sheet.
<Any Server> - Use this option to update any ESC server credentials stored in Call SC Workflow actions
including the company default credentials.
<Specific ESC server name> - The list of all ESC Server names used within Call ESC Workflow actions,
including the company default one display on the list.
3. When updating credentials of a specific ESC server, several options become available for selection.
3.1.400
759
4. By using the default All SC Users option, update is made for any ESC user of the particular ESC installation
referenced within Call SC Workflow actions.
5. The Specified SC User option indicates you want to update the login credentials for a specified ESC user
only.
6. In the User field, specify the name of the current ESC user for whom you want to modify login credentials.
7. Now, select the method to supply the New Credentials. By selecting the Company Default Server option,
the current credentials within the affected SC Call Workflow items are updated with the default ESC
credentials specified in Company Maintenance.
760
3.1.400
8. To call another ESC Server when affected directives execute, use the Specified Server option.
9. This option activates Server, SC User and SC Password fields. Enter the new credentials in these fields.
10. To verify the connection to the specified ESC server is established, click the Test Connection button.
11. Click the Start Update button to perform the update. You can also start the process using the Actions
menu.
12. The affected directives are updated. Click Close to exit the results window.
3.1.400
761
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 logs to analyze whether your BPM directives
are efficient and effective.
762
3.1.400
4. Click the Write Full DataSet check box if you want to record all header and detail information within the
tracing log. If this option is not selected, only header information is stored within the log.
5. 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.
3.1.400
763
6. Activate the Include Server Trace check box 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.
You can add server profiles and traces to the client log. When you select the Include Server Trace check
box, the client log captures these additional options. To add these profiles and traces to the client log,
update the .sysconfig file that launches the client installation. You can also customize what the tracing
log tracks by creating a client configuration file that contains additional tracing options and logging levels.
These custom options are used when you activate the client tracing log.
For more information, review the Performance Tuning Guide in the application help. The Custom
Trace Logs section documents how you add these server profile and custom trace options.
7. 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 that verifies data and other custom functions.
8. Numerous method calls occur where the data is passed down, modified, not written to the database, and
then returned to the client. Select the Write Response Data option to include these database transactions
on the trace log.
9. Now select the Log Directory Scheme option for the default log directory. The option you select defines
the directory path scheme for this client account.
If you select the Default from Epicor.exe.config file option,
you use the path defined in the Epicor.exe.config file. This
config file is located in the Client directory for each Epicor
ERP installation.
To learn how to set up this feature, review the Auto
Capture Client Logs topic in the Performance Tuning
Guide. This guide is found in the application help under
the System Management > Working With > node.
Notice after you select a scheme option, the Current Log Directory field displays the default directory path
and folder that gathers the client logs for this user account.
10. Click Save.
The next time you launch the Epicor ERP application with this account, a client log automatically generates using
the selected Dataset Options. It generates in the default file location specified on the user account.
A new log file is created each time you log into the application with this user account. If you log into multiple
computers through the same user account, a new log generates for each client instance.
764
3.1.400
1. When you run the application using the Classic interface, you activate the trace log from the Main Menu.
Click Options > Tracing Options.
2. When you run the application using the Modern Shell interface, you can activate the trace log in a couple
ways. Click the Down Arrow at the bottom of the window to display the toolbar.
3.1.400
765
5. The Tracing Options Form window displays. Use this window to define how the Tracing Log captures the
BL calls.
6. 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.
766
3.1.400
2. The Current Log File displays the directory path and filename for the tracing log. If your system administrator
activates the client log through User Account Security Maintenance, the default directory path defined
on the user account displays in this field. However you can enter a different directory path in this field or
click the Browse (...) button to find and select it. After you click Apply or OK, this custom directory path
becomes the default location that stores the generated log files for this client.
3. Click the View button to display the log within a .txt format.
4. 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, ABC Code Lookup.
3.1.400
767
5. The XML File field displays the directory path and filename for the .xml version of the tracing log. Click the
Browse button to find and select this directory path and filename.
6. Click the Create XML button to save the tracing log within 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.
7. To remove all entries from the tracing log, click the Clear Log button.
8. To add all these current settings to the tracing log, click the Apply button.
9. To exit the Tracing Options Form window, click OK.
768
3.1.400
6. Within the Standard Logging information, select the BPM Logging check box to record Business Process
Management (BPM) database calls.
Each time user activity activates a BPM, the application server log records the information and gathers the
data results.
By selecting the BPM Logging check box, you 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
3.1.400
769
For a detailed analysis, the trace URI can be manually configured to narrow down and adjust 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
trace://ice/fw/extensibility - to track asynchronously executed BPM actions such as asynchronous Execute
Custom Code actions or asynchronously sent e-mails.
7. Click Apply to save your changes.
8. As a result, the server log records the following information:
Example
Op Utc="2013-10-30T13:40:45.2677063Z" ac
t="Ice:BO:Tip/TipSvcContract/Update" dur
="1006.1712" cli="fe80::d147:d8f4:e54e:5
149%10:42111" usr="manager" machine="MOS
-TLS-DEV-AAA" pid="10788" tid="5">
<BpmCustomization Source="BO" BpMethod
Code="ICE.Tip.Update" Type="BO Customiza
tion" ExecutionInterruptedOnDirective="6
300f64f-ccd6-4617-9105-a9784736eb54" Dur
ation="530.9098">
<BpmDirective Type="PreProcessing" I
D="6300f64f-ccd6-4617-9105-a9784736eb54"
Name="MyBPMDataForm" IsCompanyIndepende
nt="false" Duration="7.9992" />
</BpmCustomization>
</Op>
For each BPM call, the BpmCustomization node is created with following attributes:
Node
Description
Source
BpMethodCode
Type
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.
770
3.1.400
Node
Description
This value displays the directive's GUID from which the service call was
interrupted.
ExecutionResumedFromDirective
Duration
For the second BPM Data Form operation, this value displays the directive's
GUID from which the service call was resumed.
Time spent on executing a BPM call.
Within the BpmCustomization node, the BpmDirective node holds the following attributes:
Node
Description
Type
ID
Name
IsCompanyIndependent
PreparationStepDuration
Duration
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 direction) 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 out of the box.
Prerequisites
This topic discusses steps you need take to before you start debugging.
The Epicor Customization Framework (ECF) supports two ways of storing generated assemblies. The preferred
method, which is either SQL BLOB (Binary Large Object) or File System Storage is defined in the Epicor ERP 10
web.config file within the customizationStorage provider property.
3.1.400
771
772
3.1.400
3. Make sure you are working with the latest BPM sources when debugging a directive. Drag and drop all files
into the Microsoft Visual Studio.
3.1.400
773
4. For debugging Options, make sure the Enable Just My Code and Require source files to exactly match
the original version options are clear.
5. Attach the debugger to the w3wp.exe process the application pool is running under.
774
3.1.400
7. Run the routine in the Epicor client. When the BPM customization is fired, the breakpoint is activated and
you can verify each step in the Visual Studio.
3.1.400
775
A project is compiled and external method .dll file is placed in the External Storage folder. Typically its
directory path is the Server\Customization\Externals location.
2. Invoke the .NET external method you created using a directive. In this example, a post-processing directive
for ABC.GetList BO method is used.
3. In Visual Studio, attach the debugger to the w3wp.exe process the application pool is running under.
4. Set the breakpoint in the custom code and run the routine you want to debug in the Epicor client.
5. At this point the debugger stops at the specified break point and you can the follow code execution, examine
variable values and so on.
776
3.1.400
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
<customizationSettings disabled="false" intermediateFolder="C:\Inetpub\wwwroot\
EpicorERP10\Server\BPM">
<customizationStorage provider="FileSystem" settings="C:\Inetpub\wwwroot\Ep
icorERP10\Server\Customization" />
<externalsStorage provider="FileSystem" settings="C:\Inetpub\wwwroot\Epicor
ERP10\Server\Customization\Externals" />
<types>
<add name="BPM.BO" folder="BO" cacheName="Epicor_Ice_BPM_BO" />
3.1.400
777
778
3.1.400
company's email application, for example, Microsoft Office Outlook . When the Global Alerts data directive is
3.1.400
779
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.
The default settings for some virus protection programs and/or
firewalls block Port 25 to prevent malware programs from
sending email. Your system administrator may need to unblock
the port or add w3wp.exe (IIS Worker Process) to the excluded
processes for outbound process on the Epicor ERP server.
To define the email settings:
1. Navigate to Company Maintenance.
Menu Path: System Setup > Company/Site Maintenance > Company Maintenance
780
3.1.400
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
8. Click Save and then close Company Maintenance.
3.1.400
781
782
3.1.400
AlertQue is added to tree. This is the same table you selected for association with the shortcut link in the
previous task.
3. Navigate to the Standard Directives > Detail sheet.
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.
3.1.400
783
784
3.1.400
8. Click OK.
The condition now states There is at least one added row in the ttAlertQue table.
3.1.400
785
786
3.1.400
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.
6. In the Name field, enter From.
3.1.400
787
Filter
Table Field
To
To
Added records
EMailAddr
CC
CC
Added records
EMailCC
Subject
Subject
Added records
Subject
Body
Body
Added records
AlertText
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.
788
3.1.400
3.1.400
789
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.
3. Click the Save and Exit button.
You return to the Data Directives window.
Be sure to select Save and Exit. The Exit button will close
the designer without saving your work.
790
3.1.400
3.1.400
791
2. In the ID field, search for and select the 1120 Order has been shipped global alert.
3. In the Options group box, select the following check boxes:
Active
Create Memo
Send 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.
5. In the To field, enter your email address.
6. In the Text field, enter Alert: A sales order has been shipped.
7. Click Save and then close Global Alert Maintenance.
792
3.1.400
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.
3. Select the Send Alert check box.
After you save this record, this salesperson will automatically receive messages from standard global alerts
on their sales orders, such as the 1120 global alert in this example.
4. Verify the Email address for this salesperson is correct.
When setting up alerts, you should always verify email addresses as you enter them or as they appear in
retrieved records. An incorrect email address will cause the recipient to not receive email alerts.
5. Click Save and then close Work Force Maintenance.
3.1.400
793
2. Click the Sales Order button to find the sales order that has been delayed. You also can enter the sales
order ID directly.
3. From the Actions menu, select Order > Reopen Order.
794
3.1.400
5. Click Refresh.
6. Select the Alert On Shipment check box.
When selected, this check box indicates that a global alert is sent once this order is completely shipped.
7. Click Save and then close Sales Order Entry.
3.1.400
795
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.
796
3.1.400
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
Rel
3000
Warehouse
Shipping Area
3.1.400
797
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 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 an alert group for Quality Assurance, you would
only select the global alerts and shop warnings that apply to quality assurance tasks.
Next you use Person Maintenance to assign recipients to an alert group. Person Maintenance lists people whose
roles are compatible with the alert groups you create.
Then you 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 receives 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.
798
3.1.400
2. In the ID field, search for and select the 1170 Job released status has been changed global alert.
3. In the Options pane, select the following check boxes:
Active
Create Memo
Send Alert
4. In the Text field, enter Alert: A job released status has changed.
5. Click Save and then close Global Alert Maintenance.
3.1.400
799
Set Up a Person
You next add your name to the alert group.
1. Navigate to Person Maintenance.
Menu Path: Production Management > Job Management > Setup > Person
800
3.1.400
3.1.400
801
802
3.1.400
2. Click the Job button to find a job record. You also can enter the job record ID directly.
3. In the Prod Team field, select your production team.
4. Clear the Released check box.
5. Click Save to trigger the alert message and then close Job Entry.
You receive an alert email message in your email client.
3.1.400
803
804
3.1.400
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.
6. Click Save and then close Alert Attachment Maintenance.
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.
3.1.400
805
4. Click the Down Arrow next to the New button; select New Standard Directive.
5. For the Directive Name, enter Global Alert - High Priority.
806
3.1.400
3.1.400
807
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.
5. Click the specified link.
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.
6. Find and select the SchedCode field.
808
3.1.400
7. Click OK.
8. Now select the any link.
3.1.400
809
810
3.1.400
3.1.400
811
5. Next in the From field, enter the address you will use for sending out this email message. For example:
[email protected]
6. Now for the To field, enter the user(s) who will receive this custom global alert. For example:
[email protected]
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.
10. In the Name field, enter JobNumber.
812
3.1.400
3.1.400
813
814
3.1.400
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.
3. Click the Save and Exit button.
You return to the Data Directives window.
Be sure to select Save and Exit. The Exit button will close
the designer without saving your work.
3.1.400
815
816
3.1.400
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.
5. Open and review the alert email in your email client.
Notice the subject line, job number displayed in the message, and the shortcut link that is included as an
attachment.
3.1.400
817
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.
818
3.1.400
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.
3.1.400
819
820
3.1.400
Dashboards | Chapter 9
Chapter 9: 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 cars 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 can 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 in a grid, chart, or gauge. 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 in the dashboard.
The 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. Then the chapter describes the
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. In conclusion, you learn how to enable a dashboard for use as an advanced search.
3.1.400
821
Chapter 9 | Dashboards
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 parts on hand information displays in the On Hand Locations grid.
822
3.1.400
Dashboards | Chapter 9
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.
3.1.400
823
Chapter 9 | Dashboards
824
3.1.400
Dashboards | Chapter 9
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 parts information. In this example, you click part DSS-1010
in the Part On Hand Status. The Time Phase Inquiry window refreshes with part DSS-1010s information.
3.1.400
825
Chapter 9 | Dashboards
826
3.1.400
Dashboards | Chapter 9
3.1.400
827
Chapter 9 | Dashboards
5. Click Save.
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
This program is not available in Epicor Web Access.
2. Once you are in the Developer mode, the New button displays on the Standard toolbar.
You can toggle the developer mode off and on by
selecting the Developer option from the Tools menu. Users
who do not have the Dashboard Developer rights do not
have this option available to them.
828
3.1.400
Dashboards | Chapter 9
3.1.400
829
Chapter 9 | Dashboards
5. In the Definition ID field, enter a unique identifier for the dashboard. This value is used internally by the
Epicor application. In this example, enter CustSvcDbd.
830
3.1.400
Dashboards | Chapter 9
6. Enter the Caption for the dashboard. In this example, the caption is Customer Service Dashboard.
If you generate a mobile dashboard, this text value displays on the dashboard tile.
7. Now enter a brief Description for the dashboard. Use this field to define the purpose for the dashboard.
8. The Owning Company field displays the company inside which the current dashboard was created. You
cannot change this value; only users within the Owning Company can modify this dashboard.
If the System Dashboard check box is selected, the Owning Company field is blank. This indicates the
current dashboard is available to all companies within the current organization.
9. Select the All Companies check box to share the current dashboard with users in companies that reside in
the same organization as the Owning Company. Users within these companies can than view and use this
dashboard.
If this check box is clear (not selected), the dashboard is only available to users in the Owning Company.
10. Select the Enable Refresh All check box if you wish to add the Refresh All button to the Standard toolbar.
11. When you select the Target Mobile Device check box, you indicate the dashboard can display on 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 the Dashboard Utilities chapter.
12. The System Dashboard check box indicates whether the current dashboard is installed with the Epicor ERP
application. If the current dashboard is a system dashboard, you cannot make changes to it.
3.1.400
831
Chapter 9 | Dashboards
13. By default, the Refresh button is automatically added to the dashboard interface; this button updates data
for a single query.
Each query is set up with a refresh interval; this causes the data on each query to be refreshed automatically.
If you need, however, you can always click the Refresh button on the Standard toolbar.
14. If you select the Enable Refresh All check box in the previous step, the Refresh All button displays on the
Standard toolbar on the dashboard.
When you click the Refresh All button, all query data updates in the dashboard.
You are now ready to design your dashboard. Remember to save changes frequently while you develop a new
dashboard.
832
3.1.400
Dashboards | Chapter 9
2. In the Dashboard Query Properties window, click the Query ID button to find and select the query.
3. In the Query Search window, notice the various types of Business Activity Queries you can search for and
add to the dashboard.
BAQ attributes control dashboard's availability and define
what data becomes available for display on the dashboard.
3.1.400
BAQ Property
Description
Shared
Indicates this query is available to all users in the source company and can be added as
a datasource for searches, BAQ info zones, BAQ reports, smart client or mobile
dashboards. Note these users will need various rights to use these features.
Updatable
Indicates users can enter and modify data within this query and perform updates to the
application database. An updatable BAQ datasource allows performing data updates
through either a client dashboard or a mobile device dashboard.
System
System (standard) queries are written by Epicor and included with the application. These
BAQs begin with the letter z; for example, zARInvProfit. You can use system queries
to display data, but to modify a system query, you need to make a copy of this record
within the Business Activity Query Designer first.
833
Chapter 9 | Dashboards
BAQ Property
Description
Cross-Company
Indicates that on BAQ is execution, the query is invoked against all companies on the
same database and rows from each company are merged together on the server into
a single result set.
All Companies
Indicates whether the current BAQ Definition is visible to all companies on the same
database server. When the Epicor application uses multiple companies contained within
a single database, the BAQ usage and visibility is applied regardless of multi-company
direct configuration. For companies hosted on different databases, this check box initiates
the Service Bus processing, when it is configured to synchronize BAQs to external
companies. If the custom BAQ is created from a Company that is running under a
multi-tenant license, the definition becomes visible to all companies within the same
Tenancy as the Owning Company.
External
Indicates the BAQ is configured to pull data from an external database management
system.
4. Click the Search button. In this example, you select EPIC03-CustTrackerOrders01 query.
This BAQ is a copy of the standard query zCustTrackerOrders01.
5. Click OK.
834
3.1.400
Dashboards | Chapter 9
7. Click the Refresh button on the Standard toolbar to execute the query and retrieve the data.
3.1.400
835
Chapter 9 | Dashboards
8. The data is generated and displayed on the Dashboard sheet you will review later.
9. 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.
10. 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.
11. Use the Available Views panel in the Tree View to select published, available views you want to add to
your dashboard.
12. 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.
836
3.1.400
Dashboards | Chapter 9
General Properties
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.
1. In the Tree View, right-click the Query icon.
3.1.400
837
Chapter 9 | Dashboards
838
3.1.400
Dashboards | Chapter 9
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.
3.1.400
839
Chapter 9 | Dashboards
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.
The Customer.CustURL column is used later in the Add
a URL Link section of this chapter.
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.
840
3.1.400
Dashboards | Chapter 9
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.
3.1.400
841
Chapter 9 | Dashboards
2. The Dashboard Query Properties window displays. Navigate to the Filter sheet.
842
3.1.400
Dashboards | Chapter 9
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.
7. Now only Open orders display in the Grid View.
3.1.400
843
Chapter 9 | Dashboards
by applying a new filter on the grid view that defines these criteria. Each query and view you add to the dashboard
has its own properties window where you can define additional parameters.
844
3.1.400
Dashboards | Chapter 9
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
3.1.400
845
Chapter 9 | Dashboards
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.
6. In the Grid Caption field, enter Open Sales Orders.
You do not have to enter text in the Grid Caption field.
If you leave this blank, the text in the Caption is used in
the Grid header. You can, however, enter different text
in this field than the Caption. This causes the Caption text
to display in the Tree View and the tabs; the Grid Caption
text displays as the Grid header.
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.
When the Show Summaries check box is enabled, a Sigma
symbol appears in all the column headings that contain
numeric data. When you click the icon in the column
heading, the Select Summaries window displays where
you can choose from the list of summarization options.
This functionality is demonstrated in the next example
when you modify the grid display.
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.
846
3.1.400
Dashboards | Chapter 9
3.1.400
847
Chapter 9 | Dashboards
848
3.1.400
Dashboards | Chapter 9
5. Drag the Name column header up to the blue header bar to group the data by customer.
3.1.400
849
Chapter 9 | Dashboards
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.
850
3.1.400
Dashboards | Chapter 9
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.
3.1.400
851
Chapter 9 | Dashboards
12. Click Save on the Standard toolbar to save the changes to the dashboard.
2. When the Dashboard Grid Properties window displays, navigate to the Filter sheet.
852
3.1.400
Dashboards | Chapter 9
3.1.400
853
Chapter 9 | Dashboards
854
3.1.400
Dashboards | Chapter 9
3.1.400
855
Chapter 9 | Dashboards
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.
856
3.1.400
Dashboards | Chapter 9
11. Notice the Tree View now displays two Grid View icons under the Query icon.
12. Click Save on the Standard toolbar.
2. When the Dashboard Grid Properties window displays, navigate to the View Rules sheet.
3.1.400
857
Chapter 9 | Dashboards
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.
7. Click the White Arrow button.
8. The rule now displays in the available rules list.
858
3.1.400
Dashboards | Chapter 9
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.
11. From the Select Field list, select OrderHed_PONum.
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
13. Click the White Arrow button.
14. The action now displays in the available actions list.
3.1.400
859
Chapter 9 | Dashboards
860
3.1.400
Dashboards | Chapter 9
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.
3.1.400
861
Chapter 9 | Dashboards
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.
862
3.1.400
Dashboards | Chapter 9
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.
7. Click OK to save the new image column.
The new Price Check column displays within the Grid.
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.
3.1.400
863
Chapter 9 | Dashboards
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.
13. To add your rule, click the White Arrow.
14. The new rule displays within the Row Rules list.
864
3.1.400
Dashboards | Chapter 9
3.1.400
865
Chapter 9 | Dashboards
866
3.1.400
Dashboards | Chapter 9
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.1.400
867
Chapter 9 | Dashboards
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.
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.
9. The Chart displays as a Column Chart.
868
3.1.400
Dashboards | Chapter 9
10. Notice the new Chart icon now displays in the Tree View of the dashboard under the Query and Grid
icons.
Chart Settings
Once you add a chart 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.
3.1.400
869
Chapter 9 | Dashboards
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.
870
3.1.400
Dashboards | Chapter 9
3.1.400
871
Chapter 9 | Dashboards
872
3.1.400
Dashboards | Chapter 9
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.
3.1.400
873
Chapter 9 | Dashboards
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. Notice the Label Caption field displays the default name for a field. If needed, you can edit the display
name for selected fields. In this example, accept the defaults.
6. 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.
7. 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.
8. Same as in grid views, you can use the Up and Down arrow buttons to change the order of columns you
want to display on the Tracker View. In this example, accept the default order of columns.
9. 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.
10. Click OK.
11. The Advanced Search sheet now displays in the dashboard.
12. Notice the new Tracker icon for the Advanced Search displays in the Tree View.
874
3.1.400
Dashboards | Chapter 9
13. To use the Advanced Search, first click the Clear button on the Standard toolbar.
14. 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.
15. Click the Refresh button to execute the search.
2. When the Customization Tools Dialog displays, from the Tools menu, select ToolBox.
3.1.400
875
Chapter 9 | Dashboards
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.
876
3.1.400
Dashboards | Chapter 9
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.
3.1.400
877
Chapter 9 | Dashboards
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.
9. Change the DashboardCondition to LessThanOrEqualTo.
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.
878
3.1.400
Dashboards | Chapter 9
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.
3.1.400
879
Chapter 9 | Dashboards
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.
880
3.1.400
Dashboards | Chapter 9
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.
3.1.400
881
Chapter 9 | Dashboards
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.
882
3.1.400
Dashboards | Chapter 9
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.
3.1.400
883
Chapter 9 | Dashboards
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.
884
3.1.400
Dashboards | Chapter 9
URL/XSLT Properties
The Dashboard 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 this 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 customers website.
3.1.400
885
Chapter 9 | Dashboards
886
3.1.400
Dashboards | Chapter 9
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.
3.1.400
887
Chapter 9 | Dashboards
888
3.1.400
Dashboards | Chapter 9
3.1.400
889
Chapter 9 | Dashboards
5. Click OK.
6. To test the process link, click the Test button to launch the Menu Process ID.
890
3.1.400
Dashboards | Chapter 9
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.
3.1.400
891
Chapter 9 | Dashboards
Report Options
1. In order to refresh a Crystal Report View in the dashboard, you must enable the Refresh All button on the
dashboard. To do this, select the Enable Refresh All check box on the General sheet of the dashboard.
2. From the Tools menu, select Report Tools > Report Options.
892
3.1.400
Dashboards | Chapter 9
3. Enter the path to the Crystal Report Executable on your workstation or click the Ellipse button to browse
your local machine for the path. By defining this path, you are able to launch Crystal Reports Designer
directly from the dashboard to create the report.
4. The Sample Data Directory field displays the path to the sample data folder on your workstation. This
directory is used to store sample data (.xml files) generated for the report. After creating the report, you are
able to use this sample data to test the report layout.
5. The Local Reports Directory field displays the path to the reports folder on your workstation. This directory
contains your Crystal Reports .rpt files. After you save .rpt files in this location, you can launch Crystal Reports
to create and modify your report.
6. Click the Apply button after you define all fields.
3.1.400
893
Chapter 9 | Dashboards
2. The Design Crystal Report command first saves the sample data from the dashboard to an .xml file in the
Sample Data directory. Click OK to confirm the sample data was saved.
894
3.1.400
Dashboards | Chapter 9
4. Within Crystal Reports, verify the Start Page displays. From the Start a New Report section, select Report
Wizard. This utility walks you through all the steps necessary to design your report.
Review the Crystal Reports application help for information
on how to design a Crystal Report.
5. When the report wizard displays, select the Create New Connection node in the Available Data Sources
list.
3.1.400
895
Chapter 9 | Dashboards
896
3.1.400
Dashboards | Chapter 9
7. In the File Path field, enter or browse for the .xml file using the path defined in the Sample Data Directory.
In this example, you select the CustSvcDbd.xml file from the SampleData folder.
8. Click the Finish button.
3.1.400
897
Chapter 9 | Dashboards
898
3.1.400
Dashboards | Chapter 9
3. Click the Blue Arrow button to move the data source to the Selected Tables list.
4. Click the Next button.
5. Select the fields you want to display on the report. In this example, you select the following fields:
OrderHed.OrderNum
OrderHed.OpenOrder
OrderDtl.OrderLine
OrderHed.NeedByDate
Customer.Name
3.1.400
899
Chapter 9 | Dashboards
6. Click Next.
7. Select Open_Orders.Customer.Name in the Available Fields list to group the information on the report
by Customer.
900
3.1.400
Dashboards | Chapter 9
8. Click the Blue Arrow button to move the field to the Group By list.
9. Click the Finish button to complete and preview the report.
This example demonstrates a very simple Crystal report.
You can create a much more complex report with multiple
groupings, subtotals, and charts. Refer to the available
Crystal report documentation for more information.
3.1.400
901
Chapter 9 | Dashboards
11. In the Save As window, navigate to the Reports folder you defined previously as the Local Reports Directory.
Enter a name for the report in the File name field. In this example, you name the report CustomerList.rpt.
902
3.1.400
Dashboards | Chapter 9
14. From the Tools menu, select Report Tools > Upload Report to upload the report to the Server Reports
directory.
15. Select the CustomerList.rpt report from the local reports directory.
16. Click Open. This copies the report from your local reports folder to the server report directory.
17. Click OK in the Upload Report confirmation window.
3.1.400
903
Chapter 9 | Dashboards
This action saves the report to the CustomReports folder of Server Data Directory specified in System
Agent Maintenance. Typically, this folder is a local directory on the same machine that runs the application
server. The location may look as follows: \\MyServer\EpicorData\CustomReports
904
3.1.400
Dashboards | Chapter 9
2. Enter a Caption for the report view. In this example, enter Customer List.
3. Click the Ellipse button in the Report File field to find and select a report file.
4. Select the CustomerList.rpt file from the CustomReports folder. Recall this location is specified in System
Agent Maintenance in the Server Data Directory field.
3.1.400
905
Chapter 9 | Dashboards
906
3.1.400
Dashboards | Chapter 9
7. Select the Generate on Refresh All check box if you want the report to be completely regenerated each
time you click the Refresh All button.
8. In the Dashboard Report View Properties window, click OK.
9. The report view icon displays in the Tree View of the dashboard.
3.1.400
907
Chapter 9 | Dashboards
2. Enter a Caption for the report. In this example, enter Customer List Report.
908
3.1.400
Dashboards | Chapter 9
3. Click the Ellipse button in the Report File field to find and select the CustomerList.rpt file from the
CustomReports folder.
4. Click OK.
5. Notice the new report link icon displays in the Tree View of the dashboard.
3.1.400
909
Chapter 9 | Dashboards
6. The report links you add to the dashboard are accessible using the Actions menu. To generate the report,
from the Actions menu, select Customer List Report.
7. Notice the Customer List Report displays in a new window instead of inside the dashboard.
910
3.1.400
Dashboards | Chapter 9
3.1.400
911
Chapter 9 | Dashboards
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.
912
3.1.400
Dashboards | Chapter 9
Publish
Information published out from one query can be used to display in 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, 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 publish both the order number and order line.
3.1.400
913
Chapter 9 | Dashboards
914
3.1.400
Dashboards | Chapter 9
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
To apply a filter that subscribes to published data:
1. In the Tree View, right-click the Shipment Detail grid icon and select Properties.
3.1.400
915
Chapter 9 | Dashboards
3. From the ColumnName list, select the field you want to filter on. In this example, select ShipDtl_OrderNum.
916
3.1.400
Dashboards | Chapter 9
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.
8. From the Condition list, select = (equals).
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.
10. Click OK.
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.
3.1.400
917
Chapter 9 | Dashboards
918
3.1.400
Dashboards | Chapter 9
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.
4. From the Condition list, select = (equals).
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.
3.1.400
919
Chapter 9 | Dashboards
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.
920
3.1.400
Dashboards | Chapter 9
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.
12. Click OK.
13. Click OK in the Dashboard Query Properties window.
3.1.400
921
Chapter 9 | Dashboards
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.
922
3.1.400
Dashboards | Chapter 9
15. Click the Binoculars button on the Dashboard Browse to launch the Sales Order Search.
3.1.400
923
Chapter 9 | Dashboards
16. From the Search window, select the records to display in the dashboard browse.
924
3.1.400
Dashboards | Chapter 9
Users who do not have the Dashboard Designer privileges can only maintain User Notes but can still view Tech
Notes.
Update 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.1.400
925
Chapter 9 | Dashboards
3. Enter technical notes in the Tech Notes field. All users can view the notes you enter here.
4. Click OK to save and exit the window.
Dashboard Properties
Just like each view on the dashboard contains unique properties, the dashboard itself has its own properties
where you can define its additional characteristics.
Located on the General sheet of the dashboard, you can use the Titlebar Subscribers to publish more than one
field to the title bar of the dashboard. This feature is available when you have multiple queries publishing
information, and you want to indicate 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.
Advanced Searches are available to use wherever you can
launch a search window. You can access it either by clicking
the search button or through a context menu search option.
926
3.1.400
Dashboards | Chapter 9
3.1.400
927
Chapter 9 | Dashboards
928
3.1.400
Dashboards | Chapter 9
3.1.400
929
Chapter 9 | Dashboards
930
3.1.400
Dashboards | Chapter 9
Dashboard Modification
Now that you know how to create your own dashboard, you can easily modify an existing dashboard. We strongly
recommend 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 to copy a standard delivered dashboard and save it with a new name so that 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.
1. Click the Definition ID button in the Dashboard window.
2. The Dashboard Search Form window displays. Click the Search button and select JobStatus from the
search results.
3.1.400
931
Chapter 9 | Dashboards
3. Click OK.
The System Dashboard Warning message displays.
4. Click OK.
932
3.1.400
Dashboards | Chapter 9
3.1.400
933
Chapter 9 | Dashboards
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.
934
3.1.400
Dashboards | Chapter 9
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.
You can access this functionality from the following places on the dashboard:
Excel Uptake Properties - As you import data from an .xlsx spreadsheet, you can select the Multi Threaded
Save check box. When you click Save on the dashboard, the Multi Threaded Save window displays.
Actions menu - Select the Multi Threaded Save option from this menu.
Save button - This option displays when you click the Down Arrow next to the Save button.
1. In this example, 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.1.400
935
Chapter 9 | Dashboards
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.
You can also indicate you wish to update the entire
collection of rows at once. To do this, clear the Submit in
Batches check box.
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.
936
3.1.400
Dashboards | Chapter 9
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 to exit the window.
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.
This feature is available for Grid, Chart, Gauge, Tracker and
URL/XSLT views.
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.
3.1.400
937
Chapter 9 | Dashboards
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.
5. Enter a Description for the 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.
938
3.1.400
Dashboards | Chapter 9
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.
10. Click Save.
11. To clear the dashboard, click the Close All button on the Standard toolbar.
12. To the confirmation message, click OK.
3.1.400
939
Chapter 9 | Dashboards
14. Click Refresh to run the query and populate the dashboard data.
940
3.1.400
Dashboards | Chapter 9
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.
3.1.400
941
Chapter 9 | Dashboards
942
3.1.400
Dashboards | Chapter 9
3.1.400
943
Chapter 9 | Dashboards
944
3.1.400
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.
1. From the File menu, select Export Dashboard and BAQs.
3.1.400
945
946
3.1.400
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:
1. From the File menu, select Import Dashboard Definition.
3.1.400
947
948
3.1.400
6. Click OK.
The Import BAQ Options window displays only if you are
importing a dashboard definition (.dbd) file that contains
queries.
The Import BAQ Options window displays.
3.1.400
949
7. To replace an existing query with the imported query, select the Replace existing check box for a selected
query. You cannot replace standard system queries (identified by the letter z). Rather, you must import the
query as new.
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.
10. After the import is complete, click Save.
950
3.1.400
Deploy Dashboards
After you finish designing a dashboard, you need to both build and deploy it to your users. 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, deploy it to the Main Menu and the Favorites Bar where users can
access it. You can then customize and personalize the dashboard as you need.
3.1.400
951
952
3.1.400
4. The results of the Test Application now display in the Deploy Dashboard window.
3.1.400
953
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. When you select the Add Menu Tab check box, the following happens depending on which mode is used
to run the Epicor ERP application:
In Classic style, this check box causes the dashboard to display on your Main Menu as a separate tab.
You can then display and use this dashboard by clicking this tab.
In Modern Shell, the dashboard is automatically loaded and displays as a new window on each logon.
You can control menu tabs on the Preferences > Tabs sheet.
Depending on the interface style, you launch this window in different ways:
Classic Menu - From the Main Menu, click Options > Preferences.
Modern Shell Menu - From the Home Page screen, click the Settings tile. Verify General Options
is highlighted and click the Preferences... link.
7. Optionally, select the Add Favorite Item check box. The following happens depending on which mode is
used to run the Epicor ERP application:
In Classic style, the dashboard is added to the Favorites bar, and becomes part of the Dashboard
Assemblies group.
In Modern Shell, the dashboard becomes part of the Dashboard Assemblies favorites group found
on the Home Page.
You can then launch this dashboard by double-clicking this icon.
954
3.1.400
8. If you want this dashboard available from Epicor Web Access, select the Generate Web Form check box.
For more information about developing Web Access
forms, read the Customization Utilities chapter in the
Epicor ICE User Experience and Customization Guide.
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.
To learn more about Mobile Dashboards, read the Mobile
Device Dashboards section later in this chapter.
3.1.400
955
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.
956
3.1.400
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
3.1.400
957
6. To add the dashboard assembly to the menu, from the Options menu, select Developer Mode.
958
3.1.400
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.
3.1.400
959
960
3.1.400
5. Click Save.
3.1.400
961
Menu Path: Executive Analysis > Business Activity Management > General Operations > Dashboard
This program is not available in Epicor Web Access.
To create a mobile device dashboard:
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.
962
3.1.400
4. Click OK.
5. A warning message alerts you that certain features of the dashboard are not supported on mobile devices.
Click OK.
3.1.400
963
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.
964
3.1.400
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. 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.
3.1.400
965
4. The Name grid displays all mobile dashboard views. For each view, you can define another views where
you can jump to. In this example, select the Customer Contacts grid.
5. The Available Jump Pages display the available views. Select the view of your choice.
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 directly accessible from the Customer Contacts grid
view.
966
3.1.400
8. Navigate to the Mobile sheet to see how the dashboard displays on a mobile device.
3.1.400
967
968
3.1.400
3.1.400
969
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.
970
3.1.400
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.
3.1.400
971
972
3.1.400
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.
3.1.400
973
2. The sliding sidebar on the left presents menu options on any given screen. Notice on the Home Page, the
list of dashboards added to Mobile Menu displays.
There are two ways of adding a mobile dashboard to the menu - using the Dashboard deployment feature
or through the Menu Maintenance program.
3. If you are looking for a particular mobile dashboard, you can search for it using the Search box above the
Mobile Menu.
4. To show or hide the sidebar, use the three line icon that displays in the top left corner.
5. The application's Home Page is provided with the live tile capable of showing dynamic content. Currently,
the interactive tile displays the Bing's image of the day. Customization of this tile is not supported.
6. The current company and site a user works with displays in the top-right corner of the Home Page. By
clicking on this information, the Change Company dialog displays.
A list of authorized companies for each user is maintained
through User Account Maintenance.
7. You can use the controls in the top-right corner to do the following:
Submit your feedback on application usage to Epicor.
Clear the application's server cache for the current user. Typically, use this option to see the newly added
dashboard or to display recent changes made to the Mobile Menu.
Configure the Epicor Mobile Access application by using the available settings.
Access the Application Help.
Log out of the application.
974
3.1.400
2. On the Home Page, a new dashboard tile is created. Access the dashboard by clicking on the tile.
3. When the dashboard loads, the content of the sidebar changes. It now presents queries and grids that make
up the query.
3.1.400
975
4. If your dashboard is not configured to automatically refresh data, click the Refresh icon and select Reload
Data.
5. To navigate through dashboard views, you can use the navigation icons found in the top-right corner.
6. Another option is to access a views directly by selecting it in the sidebar on the left. In this example, the grid
that displays contacts for the selected customer is selected.
Filter Data
This topic explains how you can search and filter records in a mobile dashboard Grid View.
976
3.1.400
2. In this example, in the search box, type Chicago and hit Enter.
3. As the result, all customers from this city are displayed on the grid.
4. If you want to filter data in multiple columns at once, use multi-column filtering. To activate the feature,
click the Filter icon in the top-right corner.
3.1.400
977
5. Above each column, a filtering box displays. For each column, you can use several conditional formatting
options. To switch between the available conditions, such as Equals (=) or Greater Than (>), click the
Condition button to the left of the filter box.
6. In this example, you would like to see all customers from the state of Illinois. In the State/Prov column filter
box, type IL and hit Enter. Data in the grid changes accordingly.
7. Now, you would like to extend your search by only seeing customers that are not on Credit Hold. Notice
this column is of the Boolean data type. To filter a column of this type, you use either "1/0" or "true/false".
978
3.1.400
9. As the result, all customers from the state of Illinois which are not on credit hold are returned on the grid.
3.1.400
979
The above steps above discuss how you can filter data in a mobile dashboard's grid. Use this approach to quickly
locate the information you need.
980
3.1.400
2. Highlight an existing record you want to update, in this example, a record for Manny Kemple is selected.
3. To access a special mode that enables data updates, click the Enter record view mode icon found in the
top right corner.
4. Notice all required fields are marked with the star.
EMA provides user friendly data entry based on data types.
When you perform an update on any type of mobile
device, you are presented with a corresponding keyboard
specific to each data type. For example, for a date type
column, you are presented with the drop-down date
control. Similarly, for a numeric type of column, you are
presented with the numeric keyboard.
3.1.400
981
5. Modify the record in any way. For example, change the Phone number.
6. Notice the Check icon in the top right corner. If an updatable grid does not support updating of multiple
records at once, selecting this icon saves the currently changed record directly to the database.
Since the Customer Contacts grid and the underlying BAQ allow updates of multiple rows at once, when
you select this icon, the record change is saved on a grid, allowing you to perform additional updates, if
needed.
7. Press the Next Record icon found in the top right corner to retrieve the record for Jerry Lanier.
8. Again, make the record change of your choice, for example, change the Title.
9. Click the Check icon again to save the record and then click X to close the Record View mode.
982
3.1.400
10. Notice the visual indicators on the grid alert the user the records have been modified and are waiting to be
saved.
11. Click the Save icon to push the pending edits on this grid to the database.
12. If an updatable grid allows creation of new records, you can add new records using the plus icon in the
top-right corner. The remainder of the process is similar to updating records discussed above.
For more information on features available in Epicor Mobile Access v2, see the Application Help accessible
directly from the mobile application.
3.1.400
983
984
3.1.400
3. For the dashboard Caption, enter URL Subscriber. This field defines the name of the dashboard menu
item when deployed as the smart client application and defines the name of the dashboard tile placed on
the EMA site when the dashboard is targeted for use on a mobile device.
4. Enter a Description for the new dashboard.
5. To define the query for the dashboard, click the Down Arrow next to the New button; select New Query.
6. The Dashboard Query Properties window displays.
3.1.400
985
986
3.1.400
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.
10. Navigate to the Dashboard sheet.
3.1.400
987
988
3.1.400
14. Notice a new part image displays within the URL pane.
3.1.400
989
990
3.1.400
4. From the Files menu, select New Document and then Web Part Page.
3.1.400
991
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.
8. Click the Create button.
The Web Part Page displays in Edit Mode.
992
3.1.400
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.
3.1.400
993
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.
994
3.1.400
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.
12. Click Apply.
13. Select a Current company.
3.1.400
995
996
3.1.400
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.
3.1.400
997
The Customer Contacts view now displays in the Left Column section.
998
3.1.400
3.1.400
999
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).
When you group records in a grid, the paging feature is
not available for use.
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.
1000
3.1.400
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.
3.1.400
1001
1002
3.1.400
3.1.400
1003
1004
3.1.400
2. Use the Detail sheet to find and select the user record you need.
3. Navigate to the Options sheet.
4. Select the BPM Advanced User check box.
5. Select the BAQ Advanced User check box.
6. 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.
3.1.400
1005
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.
1006
3.1.400
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.
2. Use the Filtering field to locate the table you want. For this example, you enter Custo to find the
Erp.Customer table.
3. Double-click the Customer table option.
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.
3.1.400
1007
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.
6. Navigate to the Display Fields > Column Select sheet.
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
8. Click the Right Arrow button.
9. The fields move into the Display Column(s) list. You will later indicate which of these fields are updatable.
1008
3.1.400
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.
3.1.400
1009
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.
1010
3.1.400
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.
3.1.400
1011
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.
1012
3.1.400
3.1.400
1013
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.
4. Select the Data Type you want for the 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
1014
3.1.400
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.
16. To exit this window, click Close.
Update Processing
To complete the updatable BAQ, you 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 with 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 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 saves the information to the database with the information a user entered in the
updatable BAQ. When you test your updatable BAQ by modifying existing data, this method runs when you
3.1.400
1015
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.
For your updatable BAQ to work properly, these methods must be set up to interact with the fields you designated
as updatable. You use the controls on the Update > Update Processing sheet to set up this database interaction.
2. Select the Advanced BPM Update only check box to indicate you want to control the updatable BAQ
through one or more method directives.
3. Click the BPM Directives Configuration... button.
You can also launch the Updatable BAQ Method Directives
window from the Actions menu. To do this, from the
Actions menu, select Customize method.
1016
3.1.400
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:
1. Select the BPM Update radio button option.
3.1.400
1017
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.
1018
3.1.400
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.
3.1.400
1019
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.
1020
3.1.400
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.
18. When you finish, click the Close button.
19. After you finish making your changes, Save the query.
3.1.400
1021
The BPM directives update with your changes. Your updatable BAQ is now ready to test.
By default, the UpdateExt method ignores zero values and
changes them to NULL values. If you need specific fields set to
zero, you can create a BPM method that checks for zero values
and then populates these values in desired database fields. For
more information, review the UpdateExt Method Set Fields
to Zero topic in the application help.
Analyze
The Analyze sheet contains the functionality you use to verify the updatable BAQ can pull 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
dashboards. Users can then enter and update the data they need through this query.
1022
3.1.400
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 directives actions would
run as well.
3.1.400
1023
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.
1024
3.1.400
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.
11. Click OK to exit the Fields window.
12. The record you updated is now highlighted within the Query Results sheet.
3.1.400
1025
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 customers website displays in the Website column.
1026
3.1.400
3.1.400
1027
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.
1028
3.1.400
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.
3.1.400
1029
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.
1030
3.1.400
3.1.400
1031
1032
3.1.400
6. The Erp.Customer table displays on the design area. Because these tables share a logical link, a connection
line displays between these tables.
7. Clear the value in the Filtering field and enter Role.
3.1.400
1033
1034
3.1.400
2. Click the RoleCd table and drag the link to the CustCnt table.
3. Complete the link by clicking the Table Relations tab.
4. Click the New button above the Table Relations sheet.
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.
3.1.400
1035
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.
11. Click Save.
1036
3.1.400
3.1.400
1037
1038
3.1.400
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:
3.1.400
CustNum
CustNum
1039
ShipToNum
ShipToNum
1040
3.1.400
3.1.400
1041
CustCnt_Country
CustCnt_Company
CustCnt_ShipToNum
5. Expand the ShipTo table node.
6. Move the following columns from the Available Columns list to the Display Column(s) list.
ShipTo_Name
ShipTo_Zip
ShipTo_Company
7. Expand the RoleCd node.
1042
3.1.400
8. Now move the following columns from the Available Columns list to the Display Column(s) list.
RoleCd_RoleDescription
RoleCd_Company
9. Expand the Customer node.
3.1.400
1043
1044
3.1.400
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.
3.1.400
1045
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.
6. When you finish, click Save.
1046
3.1.400
through the existing BPM directives defined on the business object. For this example, you use the existing BPM
methods.
1. Navigate to the Update > Update Processing sheet.
3.1.400
1047
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.
1048
3.1.400
3.1.400
1049
5. You next need to see if you can edit an existing record. Double-click a row on the grid.
6. The Fields window displays.
1050
3.1.400
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.
3.1.400
1051
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.
1052
3.1.400
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.
3.1.400
1053
15. In the Fields window, enter the information you need for the new contact record.
16. Click OK.
17. The new record displays on the Query Results grid.
1054
3.1.400
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.
3.1.400
1055
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.
1056
3.1.400
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
This program is not available in Epicor Web Access.
3.1.400
1057
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.
1058
3.1.400
3. Enter a Description for the dashboard. In this example, the description is Customer Contact Update.
3.1.400
1059
1060
3.1.400
3.1.400
1061
1062
3.1.400
3.1.400
1063
1064
3.1.400
3.1.400
1065
1066
3.1.400
3. Click the Query ID button to find and select the UpdateCustContacts query.
4. Select the Filter sheet.
3.1.400
1067
1068
3.1.400
9. Click OK.
10. Select a customer is selected from the Customer List grid.
3.1.400
1069
11. The related contacts for that customer display in the Customer Contacts grid.
12. Click Save to record your changes to the dashboard.
1070
3.1.400
3.1.400
1071
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.
In some situations, selecting this check box can improve
performance, while in other situations it can slow
performance. If you are not sure whether you should
activate this feature, test the dashboard to discover if you
can process large amounts of data at the same time.
Performance times will vary based on the number of rows
and columns in the grid.
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.
1072
3.1.400
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.
3.1.400
1073
1074
3.1.400
9. Click Save.
3.1.400
1075
1076
3.1.400
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.
3.1.400
1077
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.
You can also enter contact information in the Contact
Details tracker view.
9. Click Save.
10. To verify the record is added, click Refresh and review the contacts for Clarke Construction.
1078
3.1.400
13. You can also verify the new contact record in Customer Maintenance.
3.1.400
1079
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.
1080
3.1.400
3.1.400
1081
1082
3.1.400
Customer_Zip = Character05
3.1.400
1083
1084
3.1.400
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.
3.1.400
1085
2. From the Setters group, click and drag the Set Field item to the designer area.
3. Click on the Start item to display its connection points.
4. Click and drag a connection line from the Start item to the Set Field item.
5. Select 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.
1086
3.1.400
3.1.400
1087
1088
3.1.400
3.1.400
1089
1090
3.1.400
3. Access the dashboard in the testing mode by clicking the Test Application button.
4. The Customer Contact Update dashboard displays.
3.1.400
1091
1092
3.1.400
9. A new row is added to the Customer Contacts grid. The address information from the customer record is
automatically added to the contacts fields.
3.1.400
1093
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:
1094
Dashboard
Description
Suggested
Refresh
Cash Flow
Displays the weekly cash flow of a selected book. You can this
Once a day
tracker to analyze where cash is moving; it divides the cash data
into different buckets like Open AR, Available Cash, Open Orders,
and so on.
Customer Shipping
Performance
Site Performance
Once a day
3.1.400
Dashboard
Description
Suggested
Refresh
Supplier Performance
3.1.400
1095
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.
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.
1096
3.1.400
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:
3.1.400
1097
1098
3.1.400
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.
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.
3.1.400
1099
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 querys 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 companys 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.
1100
3.1.400
2. Enter the Cube ID. This value is the identifier for the executive query, so enter a value that identifies the
querys 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 querys 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 querys 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 querys 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.
3.1.400
1101
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.
The Summarize by BAQ and Summarize by Date check
boxes can be selected with any of the Delete Actions
described previously in this section. These options give
you a lot of flexibility for the results in the Ice.SysCube
table. Also, if the Summarize by BAQ or the Summarize
by Date check boxes are not selected, the Delete Pair By
Summarization option works in the same way as the
Delete Dimension Pair option.
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.
You do not need to select a schedule within the Executive
Query program. Instead, you typically first add this
executive query to a process set and then schedule the
process set. All the queries assigned to this process set
are then run using the same recurring schedule. To learn
how to do this, read the Schedule Process Set section later
in this chapter.
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.
1102
3.1.400
Field Mapping
You next display the Field Mapping sheet to define the Dimension Pair used to measure the executive querys
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.
You cannot select a Date field (Order Date, Need By Date,
and so on) for the Dimension 1 value. A date value cannot
be used as the first value against which the other data is
evaluated. It can be used, however, for the Dimension 2
value.
3.1.400
1103
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. Entering a value in this field is required.
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.
10. To save the current mapping, click Save.
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.
1104
3.1.400
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.1.400
1105
5. To verify the process set now contains your query, navigate to Process Set Maintenance.
Menu Path: System Management > Process Sets > Process Set Maintenance
This program is not available in Epicor Web Access.
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.
Your executive query is now added to the process set.
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 todays 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:
1106
3.1.400
Field Mapping
Set
ExportID (BAQ
ID)
The BAQ
dataor
calculated
fields:
SalesPerson State
QueryType Order
Order
This is a
Quantity Value
calculated
field.
The
application
will populate
the Run Date
value.
The application
will populate the
Run Date value.
BAQ 1 Salesperson
Backlog
John Doe
Colorado
Backlog
100
5,000
06/01/20XX
BAQ 2 - Daily
Sales
John Doe
Colorado
Daily Sales
12
750
06/01/20XX
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
Colorado
Daily Sales
12
750
06/01/20XX
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.
The Summarize by Date option also works differently if the
Run Date is set dynamically to Today or First of Month. If this
executive query is set to Today and it is run on different dates
(06/01/20XX and 06/02/20XX), separate results for the data
display. If the Run Date is set dynamically to the First of Month,
however, the results of both BAQs run dates (06/01/20XX and
06/02/20XX) aggregate together into a single record.
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.
3.1.400
1107
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
Set
2
1
2
The BAQ
dataor
calculated
fields:
SalesPerson State
QueryType Order
Order
This is a
Quantity Value
calculated
field.
The
application
will populate
the Run Date
value.
If the Summarize by
BAQ check box is
selected, the Export
ID value will be
populated.
BAQ 1 Salesperson
Backlog
John Doe
Colorado
Backlog
100
5,000
06/01/20XX
BAQ 2 - Daily
Sales
John Doe
Colorado
Daily Sales
150
5,250
06/01/20XX
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"
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.
1108
3.1.400
details such as France, USA, Machined Parts, John Doe, and so on, you must aggregate the dimension fields
against the dimension data. The Dimension BAQ is required to do this process.
Navigate to Business Activity Query.
Menu Path: System Management > Business Activity Queries > Business Activity Query
This program is not available in Epicor Web Access.
Heres what you do:
1. Click the New button on the Standard toolbar.
3.1.400
1109
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.
7. Drag the table onto the Query Designer window.
1110
3.1.400
8. With the Ice.SysCube table selected, click the Table Criteria sheet in the lower left side of the BAQ Designer
Window.
3.1.400
1111
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.
13. Click OK to accept the entry.
When you finish building your phrase, it should state the following:
select *
from Ice.SysCube as SysCube
where (SysCube.CubeID = 'Cube1')
14. Click the Display Fields > Column Select sheet.
1112
3.1.400
15. Select the columns you want displayed on the dashboard. Your selection may look similar to the following.
3.1.400
1113
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.
4. Navigate to the Mapping > Mapping Detail sheet.
1114
3.1.400
5. You need only one field Mapping Set for this executive query. Your mapping may look similar to the
following.
3.1.400
1115
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.
1116
3.1.400
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.
4. When you finish, click Submit on the Standard toolbar.
For more information on scheduling process sets, review Automatic Data Processing in the Implementation
User Guide.
Dimension BAQ
To create the Dimension BAQ:
1. Launch the Business Activity Query Designer program.
3.1.400
1117
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.
1118
3.1.400
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:
1. Click the New button on the Standard toolbar.
2. Enter a Query ID that you can use to quickly find this BAQ.
3. Select the Shared check box.
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.
3.1.400
1119
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.
1120
3.1.400
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.
For more information about how to add a new dashboard
to the Main Menu, review the Deploy Dashboard to the
Menu section within the Dashboards chapter.
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.
3.1.400
1121
1122
3.1.400
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 a new Epicor Social Enterprise user account.
In this example, the Epicor ERP user bhoward (Brian Howard) 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).
3.1.400
1123
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.
Alternatively, you can redisplay a form by clicking the Epicor Social toolbar button
6. From an open application program, you can locate and redisplay a running Epicor Social Enterprise form by
using the Navigation Buttons on the Standard toolbar.
1124
3.1.400
2. In the My Stream column header, click Toggle Conversation View to switch between displaying messages
with or without associated conversation threads.
3. Click Unpin Column to hide the My Stream column.
4. 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, group, subject, or notification you are following.
In this example, in the My Stream column, a message from PLane was chosen, 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.
5. Click Show Collapsed Columns to display the My Columns column that contains all columns unpinned
from (not currently displayed on) your Home page.
6. Click Add Columns to access actions for adding columns to your Home page and actions for searching the
message stream, one of your registered notification sources (Epicor ERP application data sources), or Twitter.
7. Click Post Message to compose and post a new public message.
8. Click Reload All Columns to regenerate all currently displayed columns.
9. Click Help to open the Epicor Social Enterprise online help system.
10. Click Menu to display all available actions.
3.1.400
1125
11. Click Menu > Admin to access procedures and supporting information for Epicor Social Enterprise
administrators.
Admin appears only when your access level is set to
administrator in your user profile properties.
12. Click Menu > Private Messages 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.
13. Click Menu > Pending Actions to display your User Profile page with highlighted items that require your
attention. Pending actions can be unread private messages, unanswered group invitations, and registered
notification sources that require user credential updates.
Pending Actions appears only when there are items you
need to address.
14. Click Menu > Notification Center to display the Notification Center page, where you can set up
notifications that post notification messages to you when changes occur in your Epicor ERP application data.
Notification Center does not display if you have no
registered notification sources.
15. Click Menu > Users to display the Users page, which is a searchable directory of all users in Epicor Social
Enterprise.
16. Click Menu > Groups to display the Groups page, which is a searchable directory of all user groups in
Epicor Social Enterprise.
1126
3.1.400
17. Click Menu > Log Out to terminate your current Epicor Social Enterprise session.
Log Out does not display if you are running Epicor Social
Enterprise from within Epicor ERP.
2. The page header displays your image, name, user ID, primary email address, and bio.
3. Click the Contact tab to see your current contact information, including Email Addresses, Addresses,
Phone Numbers, and Websites. Click a bar to expand it and view its contents.
4. Click the Messages tab to see your public messages and postings to private groups.
5. Click the Followers tab to see Epicor Social Enterprise users following you.
6. Click the Following tab to see Epicor Social Enterprise users you are following.
3.1.400
1127
1128
3.1.400
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 What 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 (right arrow) button at the bottom of the screen.
6. On the wizard's second screen, under What type of tile do you want to add?, select Epicor Social.
3.1.400
1129
7. Click Next.
8. On the wizard's third screen, for How often do you want to refresh (seconds)?, either adjust or accept
the default value of 15 seconds. This sets the rate at which the Epicor Social tile is updated to incorporate
any changes to the displayed My Stream column.
1130
3.1.400
9. Click Next.
10. On the wizard's fourth screen, under What is the default size of your tile?, either enter a value or accept
the 3x3 default Width and Height.
A tile size of 1x1 is 125x125 pixels.
3.1.400
1131
11. Optionally, select the Do you want to be able to expand your tile? check box.
12. Click Save 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 a new Epicor Social Enterprise user account.
In this example, the Epicor Social tile was added by the Epicor ERP user bhoward (Brian Howard), who
accessed Epicor Social Enterprise for the first time. Brian's My Stream column of message activity is empty
since he is a new user.
1132
3.1.400
14. Click the top of the Epicor Social tile to open the Epicor Social Enterprise form.
Alternatively, you can click the tile bottom to open the 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.
3.1.400
1133
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 a new Epicor Social Enterprise user account.
1134
3.1.400
Your own previously posted messages have an Edit action available when you are logged into Epicor Social
Enterprise. An edited message, including an Edited status icon, replaces the original at its current location in the
message stream of both yours and your recipients.
Notification messages and messages to which you attached an ERP resource reference include an Open With
action for opening your Epicor ERP application in the context of the monitored data.
2. In the Search field at the top of the Users page, begin typing. 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 the User ID and User Name. For an account auto-created for
an Epicor ERP user, the User ID is typically their email account name.
The user's bio and contact information from their user profile. This information is included in the search
but does not display in the directory listing.
3. In the user's listing, click Follow. The Follow action changes to Unfollow and the listing becomes shaded
to provide a quick indication you are following this user.
3.1.400
1135
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.
1136
3.1.400
3.1.400
1137
Reply to a Message
Reply to a public message from another user.
1. On the Epicor Social Enterprise Home page, in your My Stream column, select a message and click Reply.
The post message resources open inline, directly below the message you are replying to.
1138
3.1.400
2. Locate the group in the list. Alternatively, begin typing in the Search field at the top of the Groups page.
3.1.400
1139
5. In the listing header, you can click the Group ID to open the group's Group Detail page.
6. Each group in the system has a detail page that includes:
A header that displays the group's image, name, group ID, and key terms (if the group owner included
terms in the group properties).
Tabs that display message activity, files you or any other group members posted, pending actions (such
as unanswered invitations), and the group's membership (including you now that you joined).
1140
3.1.400
3.1.400
1141
2. Next to Share an update with, click the field to display a list of all groups in which you are a member, and
then select 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 the Post Message action that displays in a Groups page listing, on a group's Group Detail
page, or in the group thumbnail profile that opens from a group message.
6. In your new message to the group, click the Group ID to open the group thumbnail profile.
1142
3.1.400
Mentioning a User
Mentioning 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 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 receives a message
only if they are authorized to see the message. The mentioned user receives public messages and messages to
public groups, but does 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 list of users. Select a user from the list. Alternatively,
continue typing to search the list and press Enter once the list filters down to the user you want to mention.
The search works on both user ID and user name.
3.1.400
1143
If enabled in the mentioned user's User Profile, @mention email alerts are posted to the user's primary
email account. As with message postings, alerts are 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, review the Receive Mention Email Alerts topic in the Interacting with the
Message Stream via Email section.
1144
3.1.400
Using Hashtags
You can use hashtags (# symbol) 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 hashtagged word.
1. When composing a message, create a hashtag by typing # and then the word or phrase (no spaces), or
inserting # in front of an existing word.
2. The hashtagged word displays as a live link (hyperlink) in the posted message.
3.1.400
1145
3. Clicking #Word opens a search results column of the 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.
1146
3.1.400
3.1.400
1147
4. Optionally, click Insert Link and configure an active link to external content.
5. Optionally, click Choose Files and select a file or files to include as an attachment to the message.
6. Optionally, click Remove ERP Resource to remove the application record context added automatically
when you initiated the message action. You may encounter a situation where there is a business reason for
this.
7. Click Post Message to complete the action.
8. As a convenient way to verify the message posted to the Epicor Social Enterprise message stream, from the
Actions menu, select 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.
1148
3.1.400
10. Close the Activity Stream sheet and use the Navigation buttons on the Standard toolbar to display the
Epicor Social Enterprise form.
3.1.400
1149
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. Selecting a program from the menu
opens the program with the record displayed.
1150
3.1.400
3. Compose a message.
4. Click Attach ERP Resource.
This initiates a series of steps for searching a notification source and selecting a record to be attached, or
referenced, in your message.
At this point, the sequence in this example skips a Select
Source step for selecting a registered notification source
when multiple sources are detected. Only one active
registered notification source is available in the
demonstration installation and a single source is always
applied automatically.
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.
In 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 the Select Option
list and select the record to be associated with the message.
3.1.400
1151
7. To provide the recipient with the application data context for the posting, the message includes an identifier
for the selected record.
1152
3.1.400
Recommend a Message
Recommending a message shows your support and brings the message to the attention of other users.
1. On the Epicor Social Enterprise Home page, in your My Stream column, select the message and click
Recommend.
3.1.400
1153
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.
1154
3.1.400
3.1.400
1155
7. Click Show/hide Settings to display or hide summary settings. Click X Messages in all to display the
number of messages falling within one of several predetermined time ranges. Click the down arrow to select
a different range.
8. Click Toggle Conversation View to switch between displaying messages with or without associated
conversation threads.
9. Click Refresh Column to update the column to include any messages matching the search term posted
since the column was last generated or refreshed.
10. Click Unpin Column to hide the column from your Home page.
1156
3.1.400
3. At the top of the dialog box, in the Column Title field, enter a name to display in the column header.
If you leave the field empty, the column defaults to displaying the rule name(s).
3.1.400
1157
4. In the drop-down list, ensure the correct registered notification source is selected or click the arrow and
select one from the list.
If you have only one registered notification source, it defaults in the field, and the value is display only.
5. Locate one or more rules and click in the listing to select them.
You can use the Search field above the list to filter the displayed rules.
6. Click Add Column.
7. A column of notification message activity for the selected rule(s) displays on your Home page.
When scrolling through a column, click the column name in the column header to return to the top.
The column header displays either the column name you entered or the rule name(s) if you did not provide
a name. A list of rule names is truncated if there is not enough room in the header to display all of them.
1158
3.1.400
A new column is added even if there is an existing pinned or unpinned instance. This enables you to run
multiple instances when needed.
8. Click Show/hide Settings to display the complete list of rules on which the column is based, a message
count falling within one of several predetermined time ranges (click the arrow to select a different range),
and the Search field where you can enter and run search terms to filter the displayed messages.
9. Click Refresh Column to update the column to include any messages posted since the column was last
automatically or manually refreshed.
10. Click Unpin Column to hide the column from the Home page and move it to the My Columns column
where it can be stored until needed or removed if no longer needed.
2. Click Search Notification Source to display the Search Notification Source dialog box.
3.1.400
1159
3. In Search Target, notice the registered notification source currently in use defaults.
If you have multiple registered notification sources, you can select the one you need from the drop-down
list. In this example, there is only one registered notification source, so this value is display only.
1160
3.1.400
3.1.400
1161
1162
3.1.400
generate a general status notification message when an ERP data change triggers the associated data
notification rule(s).
Epicor Social Enterprise ships with default sets of data notification rules and notification profiles for working with
data monitoring in the ERP application. However, no default status notification rules are provided. You can create
custom rules, and your Epicor Social Enterprise administrator can create custom notification profiles. Your custom
rules and profiles are added to Epicor Social Enterprise and are available to other users.
You cannot create, edit, or delete notification rules or
notification profiles in Epicor Social Enterprise standard edition.
An Epicor Social Enterprise premium edition license is required
to enable the create, edit, and delete functionality. To create
notification profiles, you also must be an Epicor Social
Enterprise administrator. However, note you cannot edit or
delete system rules.
2. At the top of the Notification Center page, use the Notification Source Selection List to select which of
your registered notification sources (Epicor ERP databases) to monitor.
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 created by the administrator to support connection to your Epicor ERP database.
3.1.400
1163
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 is set to Notification Profile.
4. In the Search field, enter the name of a profile you want to monitor. Alternatively, leave the field blank and
press Enter to generate a list of all available notification profiles.
In this example, the search field was left blank so that the generated list includes all available notification
profiles.
5. If you generated the list in the previous step, select the necessary profile from the list.
6. Use the Rule (Right) column for selecting and working with a notification rule that defines the data change
that triggers a notification.
In this example, 'credit' is used as a search term for filtering the list of rules available for the notification
profile selected in the previous step.
7. Select a rule by clicking the rule's Follow action.
In this example, a rule is not yet selected.
8. 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.
The actions menu does not display if you have no
unsuspended notification sources.
1164
3.1.400
2. Under Notification Source, select the registered notification source that connects to your ERP database.
3.1.400
1165
3. In the Data (Left) column, ensure Data Records is selected. Clicking in the field switches between data
records and notification profiles.
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.
5. From the generated list, select a data record.
The Rule (Right) column automatically displays a list of all notification rules that apply to the selected data
record.
6. Optionally, in the Rule (Right) column, you can perform a search to filter the list of notification rules. Enter
a term that identifies the type of event or change you want to monitor and then press Enter.
To restore the list to all related notification rules, clear the search field and press Enter.
7. Optionally, in a rule listing, you can click View to open the Notification Rule Properties dialog box to see
how the rule is set up.
8. Notice each rule listing includes the Other Followers action with a count of current followers.
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.
Your notification is complete. You 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.
10. To verify your notification configuration, above the Rule (Right) column, open the actions menu and click
View My Notifications.
This opens your User Profile page with the Notifications tab selected to display a list of the notifications
you are following.
11. In your ERP application, make a change that triggers a data notification message and then return to your
My Stream column to verify the new data notification message displays there.
12. In My Stream, click the title of the data notification message you just received to display a thumbnail with
the rule details, including its name, brief description, and condition.
1166
3.1.400
13. Click View Rule Detail to open the Data Notification Rule dialog box.
14. Click Follow Rule to begin following the rule you are viewing.
15. Click Messages to display a separate column containing all the notification messages for the notification
rule.
In the column header, use Show/hide Settings to specify a time period or to search for a certain customer
to filter the messages that display.
3.1.400
1167
2. Under Notification Source, select the registered notification source that connects to your ERP database.
3. In the Data (Left) column, ensure Notification Profiles is selected. Clicking in the field switches between
data records and notification profiles.
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.
5. From the generated list, select a notification profile.
The Rule (Right) column automatically displays a list of all notification rules that apply to the selected
notification profile.
6. Optionally, in the Rule (Right) column, you can perform a search to filter the list of notification rules. Enter
a term that identifies the type of event or change you want to monitor and then press Enter.
To restore the list to all related notification rules, clear the Search field and press Enter.
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 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, open the actions menu above the Rule (Right) column and click
View My Notifications.
This opens your User Profile page with the Notifications tab selected to display a list of the notifications
you are following.
1168
3.1.400
Your notification is complete. You 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.
2. The Epicor Social Enterprise window opens and displays the Notification Center page with focus on the
Rule column that displays existing rules applicable to the selected data record.
You already selected 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 do not display
in this implementation of the Notification Center page.
3.1.400
1169
3. In the Rule column, locate a notification rule that matches your data monitoring requirement and click
Follow.
You are now following a notification based on the selected rule, in the context of the selected record.
4. At the top right, click Home to display your Epicor Social Enterprise Home page and begin navigating your
account on the Epicor Social Enterprise site.
5. At the top of the Home page, click your User ID to open your User Profile page.
1170
3.1.400
6. Click the Notifications tab and verify the notification you enabled is listed.
You receive a data notification message in your My Stream column whenever a change occurs that matches
the criteria in the notification rule.
3.1.400
1171
2. Under Notification Source, select the registered notification source that connects to your ERP database.
1172
3.1.400
3.1.400
1173
8. Edit the copy to create a new rule. In this example, the following data is used:
Name - replace with Customer Credit Limit Changed.
Description - replace with Message triggers when customer credit limit changes.
Condition > When... - select When a Customer record is updated.
Condition > and... - select and any change is made to the field, and in the empty field below it,
enter {Customer.CreditLimit}.
Message Template > Title - replace with Customer {Customer.CustID} Credit Change.
Message Template > Content - replace with {Customer.Name} is assigned a new credit limit of
{Customer.CreditLimit}.
1174
3.1.400
9. Click Save.
The new notification rule is added to the rule list and is available for immediate use.
10. Locate the new rule and click Follow.
3.1.400
1175
Your notification is complete. You receive a data notification message in your My Stream column the next
time a record change occurs that matches the criteria in your new notification rule.
1176
3.1.400
2. Under Notification Source, select the registered notification source that connects to your ERP database.
3.1.400
1177
1178
3.1.400
8. Define the content of the status notification message posted to the Epicor Social Enterprise message stream
when the rule is triggered.
9. Click Save.
The new status notification rule is added to the current rule list and is available for immediate use.
3.1.400
1179
2. Under Notification Source, select the registered notification source that connects to your ERP database.
1180
3.1.400
8. Notice each rule listing includes the Other Followers action with a count of current followers.
Clicking Other Followers displays a list of Epicor Social Enterprise users currently following the selected
notification rule. Each user listing includes actions for communicating with that user.
3.1.400
1181
2.
1182
3.1.400
3.
Locate the notification that includes the status notification rule and click View Rule to open the Status
Notification Rule dialog box.
The dialog box displays the current configuration of the status notification rule's identity and message
template.
2. Under Notification Source, select the registered notification source in which you want the imported rule
to be available.
3. At the top of the Rule (Right) column, open the actions menu and select Import Notification Rule to
open the Import Notification Rule dialog box.
3.1.400
1183
4. In the Choose the file to import field, click Choose File to display the Open dialog box.
5. Navigate to the export .zip file, select it, and click Open.
You return to the Import Notification Rule dialog box and the selected file displays in the Choose the file to
import field.
1184
3.1.400
6. Click Import.
The Status Notification Rule dialog box opens and displays the imported rule's properties. You can edit
the properties at this point.
3.1.400
1185
8. On the Notification Center page, in the Data (Left) column, select Notification Profiles and then search
for and select the notification profile on which the imported rule is based. Verify the imported status
notification rule is included in the list.
1186
3.1.400
For detailed steps, see the View Status Notification Rule workshops.
2. In the Status Notification Rule dialog box, click Export.
The status notification rule is saved to your system's download folder as a .zip file that contains the rule's
image file and an .xml file that contains the rule definition. Now use the Import Status Notification Rule
workshop to import the rule into another Epicor Social Enterprise site or Notification Source on your current
site.
3.1.400
1187
2. Click Delete.
If any condition that does not permit deletion is found, a message displays and the deletion is canceled. If
deletion is permitted, the status notification rule is removed from Epicor Social Enterprise.
1188
3.1.400
3.1.400
1189
2. Locate the recipient's listing and click Send Private Message to open the dialog box that displays with the
recipient's User ID in the To field.
1190
3.1.400
4. Optionally, select the Send copy of message via email check box to both post the message to the recipient's
private message activity stream and to send it to the primary email address associated with their user account.
This option overrides the recipient's current email options in their user profile.
5. Click Send Private Message to complete the action.
6. The recipient can click Private Messages on the Home page toolbar to display a column of their private
message activity, including the message you just sent.
Notice the Private Messages icon is highlighted, indicating the recipient has private message activity waiting
for them to view.
3.1.400
1191
3. The link changes to Cancel Request and your request now appears as a pending action in the group owner's
account.
1192
3.1.400
If the group owner later rejects your request, the link returns to Request to Join.
4. When the group owner accepts your request, the Cancel Request link changes to Leave and you become
a group member.
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 are now included in your My Stream column.
3.1.400
1193
1194
3.1.400
3.1.400
1195
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.
1196
3.1.400
5. Under Email Options, ensure the Post public messages check box is selected.
6. It is also recommended you select the Receive verification of email postings check box, which serves as
both a confirmation and alert whenever an email posting occurs that is attributed to your account.
7. Click Save Changes at the bottom of the page.
3.1.400
1197
8. You can now 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, obtained 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 the Receive verification of email postings check box selected in you user profile, you also
receive an email verification of the posting.
1198
3.1.400
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 you
verify the value you enter before sending the email.
3.1.400
1199
4. Send the email to the Epicor Social Enterprise email address for incoming emails (POP3 address, obtained
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 the Receive verification of email
postings check box selected in you user profile, you also receive an email verification of the posting.
1200
3.1.400
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.
3.1.400
1201
5. Under Email Options, select the Receive My Stream daily digest check box and then click Save Changes
at the bottom of the page.
Digests is sent every 24 hours, shortly after midnight, using the time on the Epicor Social Enterprise server.
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.
1202
3.1.400
5. Under Email Options, select the Receive private message alerts check box and then click Save Changes
at the bottom of the page.
Email alerts that you have private message activity are sent to your primary email account.
2. To check the current configuration of your email options, click the Email Options tab.
3.1.400
1203
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.
1204
3.1.400
5. Under Email Options, select the Receive mention alerts check box and then click Save Changes at the
bottom of the page.
Alerts are sent to your primary email account. You 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 in private messages between other users or messages to private groups in which you are
not a group member. You do not receive alerts for mentions in notification messages.
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.
3.1.400
1205
4. In the Email field, verify the primary email address associated with your account.
5. Under Email Options, select the Receive alerts for conversations I started check box and click Save Changes
at the bottom of the page.
You can have enabled all or combinations of Receive
mention alerts, Receive alerts for conversations I started,
and Receive alerts for conversations I participated in. To
avoid receiving multiple email alerts related to a message
posting - for example, for the same event, receiving an
alert as the conversation starter and another alert as a
conversation participant - you receive one email alert in
the following order of precedence:
Starter over Participant and/or Mention
Participant over Mention
Mention
1206
3.1.400
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.
3.1.400
1207
5. Under Email Options, select the Receive alerts for conversations I participated in check box and click Save
Changes at the bottom of the page.
You can have enabled all or combinations of Receive
mention alerts, Receive alerts for conversations I started,
and Receive alerts for conversations I participated in. To
avoid receiving multiple email alerts related to a message
posting - for example, for the same event, receiving an
alert as the conversation starter and another alert as a
conversation participant - you receive one email alert in
the following order of precedence:
Starter over Participant and/or Mention
Participant over Mention
Mention
1208
3.1.400
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 a Notify Me action and the action(s) that
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 a
notification profile and rule are available for users to select when following notifications.
In Epicor Social Enterprise, users must set up and begin following a notification based on the notification
profile and rule. Notification messages are posted to the Epicor Social Enterprise message stream whenever
the directive's Notify Me action is triggered. Users see those messages in their My Stream column if they 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.
3.1.400
1209
2. Under Notification Source, ensure the selected notification source corresponds to your Epicor ERP application
and database.
1210
3.1.400
5. If needed, create a notification profile. To begin, at the top of the Rule (Right) column, click the actions
menu icon.
For a detailed procedure, review the Epicor Social Enterprise Application Help.
To create a notification profile, you must be an Epicor
Social Enterprise administrator.
3.1.400
1211
2. Click Table to find and select the table for the data directive.
This example is based on the Customer table.
3. Navigate to the Standard Directives > Detail sheet.
1212
3.1.400
3.1.400
1213
2. Select the Notify Me action to display its Action statement at the bottom of the design area.
Before using this action, make sure Epicor Social Enterprise
is configured correctly for the Epicor application you are
using. If one or more Epicor Social Enterprise settings are
not specified in Company Maintenance, instead of the
Notify Me action statement, you will see the following
warning message: 'Epicor Social Enterprise is currently
not configured correctly and as a result this action cannot
be used.' If you click Validate, a message will display
explaining Epicor Social Enterprise is not configured
properly and thus will not generate any notification
messages.
3. In the Action statement, click <TableName> (Customer in this example) to open the Specify Notification
Profile and Key Tag dialog box.
This dialog box is used to select the notification profile, company, and key values 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 select a company and key value to be applied when the action triggers.
Alternatively, select a different notification profile, company, and key value. This allows some flexibility
in determining the notification profile applied as the context for an alert message.
4. In the Profile field, accept the default value, which is the Customer notification profile associated with the
directive table. You could select any of the notification profiles that currently exist on your Epicor Social
1214
3.1.400
Enterprise website. KeyTag displays the key tag for the selected notification profile. This field is display only.
Key tag values are set in the next step.
5. In the Company and Key Values fields, define the values applied in the key tag of the selected notification
profile.
In both fields, enter a value applied or right-click and select from the following actions for setting up value
substitution from the directive table:
Call Context - Select to set up substitution of the value in a selected BPM Call Context field.
In this example, in the Company field, select callContextClient.CurrentCompany to apply the current
company.
Field Query - Select 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.
In this example, in the Key Values field, select Field Query and set up a query that uses the field name
you see in the display 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-separated list of the selected table field names followed by a comma-separated list of the
corresponding table values.
In this example, Table Query is not used.
6. Click OK to save your adjustments.
7. In the Action statement, click the word designed to open the Define Notification Message Template
dialog box.
3.1.400
1215
8. Use the Name and Description fields to identify the template and its purpose. These fields are also used
to identify the notification rule created for this BPM.
9. Use the Title and Content fields to specify the message title and message content.
In both fields, enter the text that appears in messages or right-click and select from the following actions
for setting up value substitution:
Call Context - Select to set up substitution of the value in a selected BPM Call Context field.
Field Query - Select 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.
In this example, a field query is used to insert the name of the customer record changed.
1216
3.1.400
Table Query - Select 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-separated list of the selected table field names followed by a comma-separated list of the
corresponding table values.
10. Click OK to save the message template.
When a notification message is posted in Epicor Social Enterprise, the message title and content defined in
this dialog box are combined with a message ID of Data and an image associated with notification messages.
The image is not set in this dialog box. It is either the Epicor Social Enterprise default for data notification
messages or an image selected in the configuration of the notification rule in Epicor Social Enterprise.
11. The Action statement configuration is complete and includes the new message template name.
3.1.400
1217
2. In the design area, connect the Notify Me action to the trigger action.
On the Condition action, select the TRUE connection 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.
4. To activate the data directive, on the Standard > Detail sheet, select the Enabled check box.
1218
3.1.400
3.1.400
1219
4. Under Notification Source, ensure 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.
In this example, search for Customer, which is the profile name you verified earlier.
6. From the list, select the notification profile.
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 Customer Change rule was generated and added to the list.
8. Select the rule and click Follow.
Notification setup is complete.
9. Go to your Home page and verify the initial notification message is present in your My Stream column.
The message was already present in the Epicor Social Enterprise message stream. It is now visible in your
My Stream column because you enabled the notification following.
1220
3.1.400
A new notification message is 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 set up to follow
notifications based on the notification profile and rule also see the message in their My Stream column.
3.1.400
1221
1222
3.1.400
Index
Index
.net process, c# 736
.net process, vb.net 738
32bit vs 64bit odbc 408
A
activate a baq zone 196
add a query to the dashboard 832
add favorite dashboard, launch dashboard 975
add function call parameter values 69
add more set field actions 1089
add new definition 395
add report view 904
add the baq markup (baq combo) 373
advanced bpm processing 152, 1016
advanced bpm rights 727
advanced data aggregation 319
advanced group by clause editor 110
advanced search with range, add 875
advanced search, conduct 826
advanced search, use 479
advanced searches 478
aggregate data using pivot 71
analyze 155
analyze and test query 155
apply table filter 397
asp page generation 176
asynchronous actions, processing 593
attach data tag 575
attach hold 577
auto print 578
auto print, case study 648, 649, 651, 654, 658
availability of workflow elements 544
B
baq and report datasets 419
baq application server settings 194
baq best practices 197
baq combo 365
baq info zones 196
baq report designer 419
baq report, add 425
baq report, create 424
baq report, customize 444
baq report, design 432
baq report, implement 440
baq report, option fields 428
baq report, standard interface 420
baq report, test 430
baq search 165
baq search, use 477
baq searches 473
baq searches, enable fields 473
3.1.400
C
.net assembly 730, 731
calculated field 93, 95, 100, 102
baq constants 102
example one 93
functions 95
operators 100
call bpm data form 559
call SC Workflow 560
callers 559
case studies 199
case studies, bpm 595
change log 580
chart settings 869
chart settings, modify 869
chart view, add to dashboard 866
column mapping 149
column select 81
combine results sets using union 301
common table expression query 349
complete the asp page 180
condition 566
conditions, list 567
configure service connect workflow 142
copy and paste workflow elements 545
copy query 167
create a calculated field 89
create a new directive 534
create an executive dashboard - overview 1099
create closed orders subquery 294
create cte subquery 349
create group by expression 111
create intersect subquery 342
create invoice view subquery 312
create new dashboard 984
create new datasource type 394
1223
Index
D
dashboard (create and deploy) 1120
dashboard as advanced search, enable 929
dashboard browse, add to dashboard 918
dashboard creation 828
dashboard developer rights 827
dashboard modification 931
dashboard title bar, modify 927
dashboard user notes and tech notes 925
dashboard user notes, tech notes, update 925
dashboard, access 956
dashboard, copy 931
dashboard, navigate 822
dashboard, test, deploy as UI application 951
dashboards, deploy 951
data baq 1119
data dictionary viewer 21
data dictionary viewer field view 22
data dictionary viewer table view 21
data dimensions (build baq against) 1114
data directive, actions, connect 1217
data directive, create 1211
data directive, custom global alert, action sequence 814
data directive, example 1209
data directive, notification, test 1219
1224
E
email alert, conversation participant, receive 1206
email alert, conversation starter, receive 1205
email alert, mention, receive 1203
email alert, private message, receive 1202
enable external datasources 415
enable post directive 580
enable standard directive 581
enternal method logic 735
enterprise search 509
enterprise search, activate 510
enterprise search, filter options 517
enterprise search, smart client 511
enterprise search, web client 514
Epicor ERP and Epicor Service Connect Interoperability 140
3.1.400
F
field attributes editor 104
field help 24
field mapping 1103
fill table by query 589
fill table by query, bpm case study 660, 661, 663, 664, 666, 673,
677, 682, 684
filter dashboard data 976
filter, apply, subscribe, published order, line number 915
flow chart 566
G
gauge view, add to dashboard 882
general principles 539
general properties 132
general query properties, modify 837
global alert 779
global alert data directive 782
global alert groups 798
global alert setup 779
global alert setup, email 779
global alert setup, shortcut link, base 781
global alert, setting up standard 791
global alerts, setting up custom 803
3.1.400
Index
H
hold type maintenance 522
hold type maintenance how to use 522
hold type, bpm case study 619, 620, 622, 624, 626, 629, 631,
633, 634, 636, 637, 640, 642, 644
holds 522
how bpm works 531
how executive dashboards work 1095
how it works 529
I
import 947
import compatibility 751
import datasources 406
import query definition 171
import user rights 751
intersect and except subquery type 339
invoke bo method 565
invoke BO method, bpm case study 660, 661, 663, 664, 666,
673, 677, 682, 684
Invoke external method 563
L
labels 575
labor summary baq 199
list of conditions 567
locate the object of the directive 534
M
mandatory field, bpm case study 595, 597, 598, 604, 606, 608,
610, 613, 616, 617
message stream, interact via email 1195
message stream, public 1134
message stream, search 1154
message, email, post to followers 1196
message, email, post to group 1198
message, ERP resource reference, include 1150
message, hashtag, insert 1145
message, post from Epicor ERP 1146
message, post to followers 1136
message, post to private group 1193
message, post to public group 1141
message, private, post 1189
message, recommend 1153
message, reply 1138
1225
Index
N
named search, create 479
named search, details 483
named searches 479
named searches, auto load search 487
named searches, auto populate data 485
new business activity query 29
new grid view, add to dashboard 853
new web part page, create 990
not clocked out baq 207
notification profile, verify 1209
notification source, data, search 1159
notification, data record, follow 1165
notification, Epicor ERP record, follow 1169
notification, Notification Center page 1163
notification, notification profile, follow 1167
notifications, BPM directives, overview 1208
notify me 581
Q
query fields, publish 914
query properties - publish to title bar, modify 839
query properties apply filters to query, modify 841
query, add 832
quick search tab 467
quick search, activate 457
quick search, context menus 469
quick search, create 457
quick search, criteria 461
quick search, default program 470
quick search, detail sheet 458
quick search, display 467
quick search, test 466
quick searches 456
P
parameters 551
phrase build - add table 32
phrase build - function call parameters 68
phrase build - pivot subquery for clause 71
phrase build additional controls 34
phrase build filter values 56
phrase build subquery criteria 52
phrase build table criteria 47
phrase build table list 45
phrase builder table relations 37
predictive search 500
predictive search, activate 500
predictive search, create 506
predictive search, source baq 502
predictive search, test 508
primary directive 595
process link properties 888
process link, add for customer entry 888
1226
schedules 1096
search 1154
search interface, default 451
search options, override 490
searches 451
searches, default features 451
searches, hot key 454
searches, quick 456
secondary query, add to display line item shipment information
911
select and create columns for display 202
select baq display columns 298
select columns 292, 296, 353, 358
select columns for display (not clocked out) 209
select columns set operator type subqueries 85
select display columns - toplevel cte innersubqueries 81
select report data 897
select value(s) of field from specified subquery 67
send e-mail 583
service connect workflow 726, 733
set argument 589
3.1.400
T
table relations - manually connect tables 42
table relations - predefined dictionary relations 39
test the baq 300, 336, 362
test the results (baq combo) 376
test updatable query 157
the chart properties window 866
the chart view 866
the dashboard browse 918
the gauge properties window 882
the gauge view 882
the general sheet 29
the grid properties window 844
the grid view 844
the process link 888
the query builder 32
the report view and report link 892
the tracker properties window 873
the tracker view 872
the url/xslt view 885
trace log, client 762, 764, 767
trace log, server 768
tracker view, add for advanced search 873
transmission rules 546
troubleshooting actions 762
3.1.400
Index
U
updatable baq 1006
updatable baq method directives 528, 1080
updatable baq method directives, actions 1080
updatable baq method directives, default data 1081
updatable baq method directives, define action 1086
updatable baq method directives, get methods 1083
updatable baq method directives, post-processing directive 1084
updatable baq method directives, publish data 1081
updatable baq method directives, select action 1085
updatable baq method directives, test) 1090
updatable baq rights 1004
updatable baq, analyze 1022, 1027
updatable baq, fields 1010
updatable baq, properties 1009
updatable baq, update processing 1015, 1017
updatable baqs, regenerate 1055
updatable business activity query 130
updatable dashboards 1057
updatable dashboards, contact grid properties 1070
updatable dashboards, create 1058
updatable dashboards, customer grid properties 1062
updatable dashboards, customer query 1059
updatable dashboards, test 1075
updatable dashboards, tracker view 1073
updatable dashboards, updatable contact query 1065
updatable field editor 137
updatable mobile dashboards 980
updatable query settings 132
updatable query, set up 1007
update a directive group 752
update and create supplier records 216
update processing 139
update table by query 591
update table, bpm case study 686, 688, 689, 692, 693, 695, 698
URL link, add to display customer website 885
URL query phrase subscribers 984
url/xslt properties 885
use except subquery type 347
use table list 413
User Profile page 1127
user rights 131
user, follow 1135
user, mention 1143
using business process management 532
using inner subqueries 290
using variables tab 548
V
validation 558
variables 551
variables, context menu 559
variables, directive 551
view system queries 27
views, arrange within SharePoint page 996
views, reusing 937
W
web dasher 1001
1227
Index
1228
where-used 164
3.1.400