Triggers are the core unit of user-definable logic in the Tulip system. Triggers wait for events to fire then they check various values and compare them inside clauses to determine whether to perform actions. This document describes triggers as they relate to Apps; Refer to Machine Triggers for triggers as they relate to machines.


EventThe event that the trigger executes in response to. See below for possible events.
ClausesThe logical operation the trigger performs before deciding if it should execute an action in response to the event. See below for possible clauses.
ValuesExisting data inside the Tulip system. An example value could be: "if the Tulip variable X is greater than 3" where X is the value. See below for possible values.
ActionsWhat the trigger does. Many actions are possible in the Tulip system. See below for possible actions.


An event can result from multiple sources. Possible sources and examples below:

Physical interaction
  • Barcode being scanned by a USB barcode scanner
  • USB footpedal pressed
User interface interactiona user presses a virtual button inside of a Tulip App.
Time Interval60 seconds have elapsed since the App was started.
Machine EventA machine emits a state change event, e.g. The machine has stopped.


Clauses allow users to define a series of boolean logic expressions (if/then statements) that must all evaluate to true before a given action is performed in response to a trigger event. A user can define a series of comparisons and then decide to execute a number of actions if one of the statements evaluates to true of if all of the statements evaluate to true.


Values can be any data-store that is maintained in the context of an App execution. Values can come from a number of sources, including:

  • Table Record - A record placeholder holding the value of an entry in a Tulip Table. See Record Placeholder
  • Expression - An expression defined via the expression editor. See Expression Editor
  • Machine Activity Field - checks the up/down of a given machine.
  • Users - Values associated with a given Tulip user.
  • Static Value - Can be set to any unchanging value.
  • App Info - Set of information about the App itself. The default App Info fields include:
    • Logged In User: Select from a list of Tulip users
    • Logged In User/Badge ID: The badge ID of the logged-in user
    • Logged In User/Name: The name of the logged-in user
    • Time Elapsed on Step: The total amount of time spent on a specific step
    • Time Elapsed on Current Step: The total amount of time spent on the current step
    • Time Elapsed on App: The total amount of time spent in the app during this runtime
    • App Name: The name of the app
    • App Version: The current version of the app
    • Station Name: The name of the station where the app is running
    • Step Name: The name of the current step
    • Step Group Name: The name of the current step group
    • Shift Name: The name of the current shift, as defined in the Schedules tool
    • Current Date And Time: The date/time when the app was started
    • Target Cycle Time For Current Step: The specified expected cycle time for the step that the operator is viewing
    • Target Cycle Time for App: The specified cycle time for the whole app
  • Variable - A named value held in the given App context. Each variable has a type, see variables


There are two categories of actions that triggers can cause: transition actions and regular actions. Transitions are changes to the flow state of the App. Transitions can occur by changing the current step, canceling the current App (resetting completion data) or completing the App. In a trigger there can only be one transition per action section. Once a transition has been executed by the App, any triggers for that same event will not fire. For example, if a user defines two separate triggers for a barcode scan and they both contain a transition, only the first to execute will be run.

Available transition actions:

  1. Go to Step - Users can enter the step name or select next or previous as defined in the step list panel.
  2. Go To Step by Name - User can use a variable value to determine the next step, rather than a predefined value
  3. Cancel App execution - current App context will be cleared and completion data will be reset.
  4. Complete App execution - current App context and execution state will be persisted. See completion.
  5. Change App - The ‘cancel App’ and ‘complete App’ actions both have an option to change Apps. If this action is selected the system will route to the App selected in the trigger. It will open the App to the version assigned at the station. If there is no assignment of the App at the station, then it will open the most recently published. If there is no published version then the system will error. The destination has the following options:
  • Logout Current User: Return to the operator login screen in the Player
  • Change to App: Change to the first step of a different app
  • Change To Step: Change to a specific step in a different app
  • Go To Splash Screen: Return to the introductory screen of the app, which requires an operator to press "Begin" before reaching the first step.
  • Change to App by Name: Dynamically define the next app within the context of the current app and go to first step of that app
  • Go To Step By Name: Go to a dynamically defined step within the same app after completion

Available regular actions:

  1. App
    • Save All App Data saves the current execution state of an app as a completion. Saves data only - does not clear/reset variables or Table Placeholders and does not restart the app.
  2. Arrays
    • Clear array clears the values stored in an array value.
    • Concatenate array Combines a source array with a destination array value.
    • Get from index in array Gets the item at a specified index from an array value.
    • Get length of array Returns a number that corresponds to the number of items in the array.
    • Join to string Returns a string of all values combined by a specified delimiter.
    • Pop from array Returns the last item of an array and removes it from the array.
    • Push onto array Adds an item to the end of an array.
    • Set index in array Adds an item at a specified index. If there was already an item at that index it will be overwritten.
    • Insert at index in array Add a new value after a specified index within an array variable
    • Remove element from array Remove an element at a specific index from an array
    • Remove and store element from array Remove an element at a specific index from an array and store it in a specific variable
    • Swap elements in array Swap the elements in an array at 2 given indices
    • Sum array Sum all integers or floats in an array and return in one value
  3. Data manipulation
    • Store in Variable - store a new value in the context of the current execution.
    • Increment Variable - increments a specified numeric value.
    • Decrement Variable - increments a specified numeric value.
    • Clear Variable - set a value to its initial zero-value.
    • Set Downtime Reason - set the reason a specified machine is down.
    • Reset All App Variables to Defaults - resets app variables to the defaults defined for each variable.
  4. Logout current user - logout the current user and cancel the current App execution.
  5. Open link - open a specified link in another window.
  6. Open File - Open a specified file path using the default program on your computer (Windows only).
  7. Play sound - play a short audio snippet. Options include: Warning, Overtime, Doorbell, Three notes, Xylophone.
  8. Player menu - display player menu to a specific section. The 3 menu options are Open Comments Menu, Pause App, or Open Regular Menu.
  9. Scan optical barcode - triggers a scan action at a specified barcode.
  10. Print using system dialog - bring up the system print menu for the current step.
  11. Run connector function - users can select from one of the connector functions defined in the Tulip system, and specify which value to save the results to. For more information on connector functions see Connector functions.
  12. Run device function - users can select from the set of device integrations available in the Tulip system.
  13. Send email - sends an email to the user specified (with either a static value or user variable) with a specified message in the email body.
  14. Send SMS - sends an SMS to a specified user (with either a static value or user variable)with a specified message as the content of the SMS.
  15. Send SMS With Image - sends an SMS to a specified user with a specified message and a specified image as the content of the SMS.
  16. Show error - Brings up the error toast in the player with a specified message.
  17. Show message - Brings up the message toast in the player with a specified message.
  18. Split string - A function that takes two strings, the 'split' string and the 'by' string, and returns an array of strings that can be saved to a variable. The resulting array splits the split string by every instance of the by string.
  19. Table records - a collection of actions for how Apps utilize table 'record placeholders. See Record Placeholder


QA-T57Variable Widget : 02 - Record View: Compound variables can be used with triggers
QA-T62Variable widget : 07 - Testing variables and compound variables in app
QA-T98Record Placeholders : 04 - Load Table Records Trigger, and Table Record Widget
QA-T99Record Placeholders : 05 - Create and Load Table Record Trigger
QA-T100Record Placeholders : 06 - Table Data Tab
QA-T116Machine Monitoring : 06 - Machine Outputs
QA-T148Connectors : 02 - Add Function to SQL Connector
QA-T183Triggers - Print Using System Dialog Trigger
QA-T235User Table : 01 - User Table
QA-T240Connectors : 04 - Add several functions to HTTP Connector
QA-T258Machine Monitoring : 08 - App Triggers For Machines
QA-T352Triggers - Basic Triggers App
QA-T399Table Links : 03 - Linking Records via App Triggers
QA-T469Schedules and Shifts : 02 - Applying shifts in apps
QA-T497Expression Editor : 01 - Create an expression in an app trigger
QA-T501Copying Triggers : 01 - Copying and pasting triggers between buttons
QA-T502Copying Triggers : 02 - Copying and pasting triggers between image widgets
QA-T504Copying Triggers : 03 - Copying and pasting triggers between Interactive Tables
QA-T505Copying Triggers : 04 - Copying and pasting Step Triggers
QA-T506Copying Triggers : 05 - Copying and pasting App Triggers between apps
QA-T515Master Layout - Widget triggers
QA-T516Master Layout - Step and App Triggers
QA-T521Expression Editor : 02 - Running the "Expressions" app


12Ability to assign and notify multiple users for a given approval workflow of all content.
66Tulip can be used in environment where operators wear gloves. i.e. sterile or clean areas where the operator is gowned up and has gloves on
75Ability to send notifications from any content screen. Ie. email, txt message, alarms.
78All contents have to guide operators thru the process steps in an easy intuitive manner. Ie. easy navigation between process steps
83Ability to configure signature to complete a process step.
84Ability for content to guide operator thru the execution of a process flow model
88Ability to designate certain content fields to be required for data entry
89Ability to configure alerts based on criteria of the entered data
90Ability to configure job aids for assistance. e. click on "help" to get instructions or show how-to procedure
93App has to provide navigation between process steps from external input. Ie. scanner, button, switch, I/O triggers, etc.
99Ability to display the acceptable quality limits to the operator during the execution with an indication of whether the current value is inside/outside the limits.
100Ability to retrieve, examine, and view batch/lot and material attributes used in the processing step (e.g. potency), from external source.
118Ability to configure steps and states for work on orders, materials or equipment in a workflow
119Ability to configure procedural elements for work on orders, materials or equipment in a workflow
121Ability to define procedural sequences with relevant process information that can guide an operator through task execution.
122Ability to define process flows that can be executed in parallel with one another
123Ability to define process and material workflows structures that can be executed in sequence with one another
124Ability to define procedural elements in process and material workflows that can be repeated in sequence, ie configurable number of iteration of the same step both min. and max. number of iterations.
125Ability to define conditions to route process between steps in the workflow. These conditions can be based on state change in other steps or time constraints, equipment status, critical alarms, completion of other steps or defined timers.
127Disallow completion of work until all required processing steps have been performed. i.e. disallow batch close when there are incomplete processing steps.
133Ability to parameterize a process and production model definitions. Ie. create generic definition using parameterization that are substituted by specific production order information prior to release to production.
150Ability to define steps and procedural elements that are triggered by time-based events such as timers or date-time.
151Ability to configure allowed overrides for steps and procedural elements. An override can be allowed for out of spec conditions and can require additional approval using e-signature
154Ability to use process values from previous process steps in any procedural element or step workflow.
180Ability to propagate material attributes to associated materials in the material tracking hierarchies. e.g. assigning material attributes to final product from intermediates.
190Ability to define a UoM and the conversion formulas and rules between UoMs
253Disallow steps from completing until the correct material, material quantity, has been consumed or identified
258Ability to complete steps with process values that are not within the predefined limits if appropriate exception/deviation information and approval is entered
260Ability to track equipment use in production execution by material unit and work order.
261Ability to track equipment substitution during process execution.
274Ability to start processing for work orders by starting to track material (batches, lots, units, etc.). Tracking information should respect tracking hierarchy (kits, trays, wells, flasks, jigs, etc.)
276Work order have to be approved and released for production before any material can be started. Ie starting batches/lots
277Ability to view dispatching list by equipment. Ie for any element of the equipment hierarchy such as area, machine, work center, etc.
278Dispatch priority of work orders and batches/lots can be controlled using predefined configurable dispatching strategies
288Ability to track dispatching of work orders and materials to production once they are released.
290Provide managed process execution that guides the user through the production process as defined in a Production Model including the workflow, process logic, validation requirements, process parameters, material inputs and material outputs.
291Provide sequence management of process steps so that Apps can get required information for execution of a specific process step
293Track process execution of the Production Models by Apps
295Verify that all required data has been entered and collected as prescribed by the step on completion. Disallow to progress on execution path if verification fails
301Ability to re-execute process step respecting any constraints of the process step configuration in the process flow.
302Ability to re-execute process step with override of constraints of the process step configuration in the Master Recipe or material workflow. In such a case an extra e-signature can be required.
303Ability to track batch/lot and material rework based on the Master Recipe or material workflow configuration.
309Ability to track use of one source material or load-carrier used for multiple orders Eg. bulk material that is used for different products.
317Ability to track multiple dispensing of the same material continuously for different work orders or batches/lots as part of a campaign
326Ability to route and disposition materials based on sampling plans Eg. hold or future hold materials until sample testing results are available
327Ability to route and disposition materials based on results of sample testing (off-line) and/or quality testing (in-line) Eg. hold, reject, scrap, or release materials based on sample result
330Ability to automatically or manually log an exception when data is not within configured limits and tolerances. Disallow process completion until exceptions have been logged with configured e-signatures and any authorized overrides have been processed e.g. supervisor signature, scrap, etc.
337Ability to track material consumption in a process step. Material consumption may include processing, assembly, weighing, dispensing, etc.
347Ability to track all WIP materials at all material hierarchy levels including batches, lots, and materials. Ie. material tracking history will include all activities performed on materials including issue, consumption, processing, mixing, assembly, movement, transfer, etc.
350All material tracking history will include context of material hierarchy levels
354Ability to track material association to work order and production order at all levels of material tracking hierarchy
357Ability to track material consumption and use at all levels of the material tracking hierarchy.
358Provide configurable way to review exceptions
371Ability to control automated equipment state (start, stop, pause, resume, etc.) during the execution of a process step.
378Ability to assign operators to equipment or equipment group at login.
385Ability to track equipment location for mobile equipment. The equipment log will include the equipment's location history or path.
388Ability to track material inventory and its physical location.
390Ability to track materials associations using the material tracking model. Ie. track physical material in tray location, trays in batches (Cohorts).
391All materials must be identifiable through auto-id (e.g. barcodes)
392Ability to track materials handled in load-carriers.
393Ability to track loading of material to a load-carrier and its location within the load carrier. Ie. material in a well, plate, flask, tank, tote, etc.
394Ability to track unloading of material from a load-carrier
405Ability to manage and track material consumption as part of a process step. Material consumption may include processing, weighing, dispensing, etc.
406Ability to consume by pre-configured unit of measure (UoM) quantities such as weight, volume, etc.
407Ability to track of material waste and scrap as part of the production process execution.
426Ability to transfer sample material as defined in sampling plan
427Ability to track material attributes during production operations with associated capabilities to browse their history and their trending e.g. temperature, assays, etc.
456Ability to define and dispatch work orders for the different segments of the manufacturing operation.
457Ability to define work order types to indicate special processing or release procedures. Ie normal, testing, prototype, validation, rush, etc.
803All records shall be Accurate. there must be the ability to build accuracy checks into the design of the system or configure verification for manually entered data as necessary.
805All records shall be Consistent, ie capture and recorded in the same manner and in the correct sequence of the acitivities or action being recroded.
836Ability to retrieve information from external a system of record so that Apps can get the required information for execution fo a specific process step.
856When an individual executes a series of signings during a single, continuous period of controlled system access, the first signing shall be executed using all electronic signature components; subsequent signings shall be executed using at least one electronic signature component that is only executable by, and designed to be used only by, the individual.
857Ability to print configured labels for sample materials