Skip to content

SYMENU System Manager Introduction 17

Consolidate Duplicates In The Same Batch



“Consolidate duplicates in same batch” applies to events that take place in a batch process mode such as PO Receiving.

 General Example:

You have a Specific Event, e-mail type action, related to receiving an item into inventory.  If this item appears 4 times on the vendors packing slip and each is received as a separate line receiving, four e-mails will be triggered when the batch has been posted.  If the “Consolidate duplicates in same batch” is checked, the system will consolidate the 4 receivings into 1 e-mail.

Template Variables

 Template variables extend the flexibility of templates by allowing you to define your own set of criteria (template values) to be input before triggering the event.  By example, we will create a template using variables and show you how to use it.



 A customer would like to be notified when an out-of-stock item is replenished, but does not have access to e-mail.

Step 1.

 In Inventory Item File Maintenance, Change Mode, open any item.  For this scenario we will use item “Clock.”

 Click the Specific Events Icon or press Ctrl-E to open the Event Request Window.

 Press F5 to find, highlight, and insert Program PO2002 Receive Item.  This opens the Event Action Request Window.

 Step 2.            

 Event Action Request General Window

 Action Type       = E-mail

Disposition        = One-time Request

Expiration          = Never Expires

Click Subscribe To All

Step 3.

                        Open E-Mail Folder

 Click Templates – Create New

If the system notifies you that one or more templates exist and asks if you wish to use one, answer “N”.

 Complete Template


1.                   Enter Description of Template

2.                   Right Click, select Template Variables, and define the template value.

3.         Repeat Step 2 for Name, Telephone, Extension, and any additional user defined prompts you may require.

Step 4.             Save Template

Step 5.             Press Use Template

The user-defined template values now appear.  Leave blank and Press Okay because at this point we do not need to complete the prompts.

Step 6.             Enter the To: e-mail address.  This will be the person (order entry person, salesman, Admin Assistant, etc.) responsible for the action to take place.

 Step 7.             Save

Using The Template Variable

In COP or Sales Desk, whenever an item has insufficient quantity to ship, the user is alerted via a popup box.  In this template variable example, we will be processing orders in Sales Desk.




As soon as the user is alerted, he may tell the customer, “We are out stock right now.  Would you like me to notify you when it is available?”

If the customer says “yes,” but does not have an e-mail address:

Step 1.

User presses the “Red” Special Events Icon to bring up the Specific Event.  The Icon is red because when we setup the event action using the Clock Item Record, we subscribed to all items.

In the Event Request Window, the user presses the F5 key to find, highlight, and insert PO2002 Receive Item.

Step 1.

In the new Event Request Window, click the E-Mail Folder and answer say “YES” to use an existing Template.



Highlight the template we created, “Stock Watch for Cust W/O E-mail” and click the Use Template button.  As soon as you do this, the template variable box appears for you to input the criteria (template Values) defined earlier.  The figure below shows the box completed.

Step 2.             Press OK

Step 3.             Enter E-mail address and Save.

The next PO Receiving for this item will trigger an e-mail to notify the customer using the above template values in the body text.



“COBOL Only” means the Elliott Event Manager will call a COBOL program (coded with and compiled to the Elliott standard).  The COBOL program is to be provided by the developer.  The COBOL program can do anything.  For example, when a stock watch event is triggered and processed (an item was out of stock and the user wants to know when you receive the item into inventory), it is possible to write a COBOL program to create an Elliott sales order.  Then, you will define the event as “COBOL Only.”  Put the COBOL program id in the event and specify the parameters.  The parameters in this case will probably be the Customer# and Item#.  Additional information is also passed over to the COBOL program automatically, including the file reference id.  If the event subscription applies to all reference-id for the file (subscribe to all), then most likely you would want to use the information passed in the SYEVTQUE record instead of the passed parameters defined in the event subscription screen.  It is the developer’s job to create this COBOL program that will take the passed parameters to create the proper Elliott order.

In the COBOL program, the developer will define the linkage section as following:






 Upon completion of your COBOL program, you should set the status of the execution result:

  • Event-Pass-Success:  This is the default.  After exiting your COBOL code, the system will automatically delete the Event Queue record and properly dispose of the Event subscription in the Event Action table.
  • Event-Pass-Delete: It will signal to system code to delete the Event Queue, but do not dispose of the Event Action table.  
  • Event-Pass-Reverse: It will reverse the Event Queue record as it was not processed yet, so it will be processed again next time.  This may be a record lock situation.
  • Event-Pass-Error: In this case, you should return the Event-Pass-Status-Code and Event-Pass-Msg.  The system will keep the Event Queue record and mark it as an error.  The user can process the event queue with an error condition again through the F4 key in the Event Request Window.

If you would rather call an EXE program (like Visual Basic), you can use the “EX” API call in this COBOL program to launch your EXE.  In that case, the COBOL program will be a simple pass through program without much logic.  Please refer to the developer reference section of this manual for more information on “EX” API call.

User Defined

The “User Defined” event depends on an external Event Handler to monitor the Elliott Event Quote file.  This external Event Handler is not provided by Elliott.  Let’s presume this Event Handler is a Visual Basic program written by the developer, then we expect this VB program should be constantly running and polling Elliott Event Quote every once so often (like from a few seconds to 1 minute).  Once the VB program found any user definable Events in the Event Queue, then it should process them, and when successfully completed delete it from the queue.  It is important your external Event Handler should delete the user defined event from the queue to prevent the Elliott Event queue from becoming too big and thus affect the performance.

To implement the “User Defined” Event Handler might be a challenge because the developer needs to understand the data structure in Event Quote.  The tables are SYEVTQUE (System Event Quote) and SYEVTQUD (System Event Queue Detail).  They are defined in the Elliott DDF files.


Feedback and Knowledge Base