Fields (Admin)

Fields (Admin)


The Fields (Admin) page documents how Stratus administrators configure Fields, which are reusable, Excel-like expressions and calculated values built from part properties that can be referenced across reports, dashboards, aliases, and filters. It covers field definitions (name, data type, default value, editability, expressions, and totaling), supported expression patterns (if statements, data conditioning, concatenation, pass-through, array handling), and includes practical syntax examples for common use cases.

See the Field Reference and Examples page for syntax and examples.

 

Stratus Academy Course Video

To take the Fields course, login to Stratus Academy and and locate the course ADM-505: Admin 2 - Fields.

Configure a Field

To configure a field:

  1. Under Admin > Company > Fields, click the New Field button. The field editor displays.

    image-20260211-181441.png

     

  2. Field Definitions

    1. Name – Name of the field. Field names cannot contain special characters such as .{}()+-/*

    2. Display Name - The purpose of this column is to use a Field Display Name in reports rather than the full name of the expression. There are rules as to when the Display Name is used, for example if there is not a Report Field header.  See examples below.

      1. Three Examples: The screen shot below highlights which column heading will be used and in the order each will be used.



        1. Report Field Header under Admin > Company > Report > Report Field > Header.

          Example: In Report Fields, the Header = Total Pipe Length - H which takes precedence over the Fields Display Name = Total Pipe Length - F.

           

          image-20250121-152300.png

           

        2. Field Display Name under Admin > Company > Fields > Display Name.
          Example: In Report Fields, there is no Header for the field in row #3, therefore, the Fields Display Name = Total Pipe Length - F displays.

           

           

        3. No Field Display Name or Report Field Header
          Example: The field does not have a Display Name under Fields, nor does it have a Header under Report Fields. Therefore, the column header uses the Field Name (Ex. TotalPipeLength_NoName).

          image-20250121-152430.png

           

    3. Description – Clarification of the field purpose.

    4. Part Filter - The Part Filter column allows administrators to filter parts before they are processed by the Field Expression. As a result, the Field Expression will process a filtered subset of the model parts rather than the entire model which will result in faster report generation and less complicated Field Expressions. Below is a Pipe Length and an Earned Labor example.

      1. Example - Pipe Length

        Old Field Expression - The top row displays the Old Field Expression which had to query for the CID, then query parts, and then query categories to give a result.

        New Part Filter - The bottom row displays the selected Part Filter (see the referenced filter below). Referencing the Part Filter makes for a simpler Field Expression (Ex. {Length}). In many cases, the Filters will have already been written and in used in viewers under Filters > Company. Expressions with a part filter will return an empty result for parts that don't match the filter.

        The Part Filter referenced above does all the pre-filtering including the ServiceType, CID, Source, Product Name, and Category so that your Field Expression only has to ask for the {Length}.

        As a result, the report (below) includes both the OLD and NEW Fields to show they result in the same values.

        • OLD Field (Ex. CSG _ Pipework _ Dashboard _ Total Pipe Length which uses the Report Field column header Linear Feet Of Pipe (Total))

        • NEW Field (Ex. QA_CSG _ Pipework _ Dashboard _ Total Pipe Length which uses the Report Field column header QA_Linear Feet Of Pipe (Total)

         

      2. Example - Earned Labor

        Old Field Expression - The top row displays the Old Field Expression which had to query for the parts to see if it they were past a certain tracking status.

        New Part Filter - The bottom row displays the selected Part Filter (see the referenced filter below). Referencing the Part Filter makes for a simpler Field Expression.

         

    5. Data Type – The following data types can be defined. Note: Selecting the correct Data Type is directly related to whether or not your Field will function properly.

      1. String – Works with Alphanumeric characters and for the results of a concatenated field. See the Concatenated Field example below.

      2. Integer - Used to calculate Numbers or set a Boolean checkbox.

        1. Boolean - A Boolean checkbox must have the following:

          1. Data Type: Integer or String

          2. Default Value

            1. Integer: 1 = Checked checkbox, or, 0 = Unchecked checkbox

            2. String: true = Checked checkbox, or, false = Unchecked checkbox

          3. Is Editable: Checked

          4. Possible Values: Not Used  

          5. Example of all Boolean Field options:

             

          6. Example of all Boolean Field option results:

             

      3. Decimal – Used to calculate Numbers and Decimals.

      4. Date – Date and time stamp.

      5. Array - The Array Data Type generates a semicolon-separated list of values for a property, one value per part, for a package or assembly (Ex. Weight, Services, etc.). A second Field should be created which processes the array resulting list of values and utilizes one of the available functions such as Maximum(), Minimum(), Average(), MostCommon(), UniqueValues(), etc. to determine the result.

        Note: The Data Type "Array" should not be used in conjunction with the Is Total checkbox being checked. Array and Is Total are alternative solutions to the same problem.  “Is Total” is the original method while “Array” is the new method to solve the problem.

        1. For example, with Data Type = Array, this Field Expression will list the Service or ServiceAbbreviations for all parts in the package or assembly report.

          image-20250121-152650.png

           

          image-20250121-152736.png

           

    6. Default Value – The default value, if any, that you want to be entered for this Field.

    7. Is Editable (checked by default) – When checked, this Field can be edited by users.  For example, let’s say you want to add the ability to approve a package or enter an approved date. Create the new Field where Is Editable is checked and then add the Field to a package report.  Below is an example of editing a Field on the Packages > Dashboard. Users simply click the cell to edit. Once saved, the information will be metadata attached to the package. See the Possible Values column for information on setting values for a dropdown option list.

       

    8. Possible Values (; or ColumnLookup) - The Possible Values (; or ColumnLookup) column provides two ways to populate dropdown values for Fields where Is Editable is checked.

      1. Possible Values Semicolon Separated - A semi-colon separated list of possible values can be entered and will display in the report. For example:

        1. The values 0.30;0.50;0.70 have been entered in Possible Values column for this editable Field. Note: Emojis can also be entered by pressing the [Windows key]+[.] keys the emoji popup will display and any selections can be used in the list of Possible Values.



        2. Note: The default value (0.30) was included and each value includes 2 decimal places since the report will display Decimal and Precision = 2.

          image-20260211-182101.png

           

        3. On the Packages Dashboard, the Possible Values will display.



      2. ColumnLookup() - ColumnLookup() is a function that works with Lookup Tables to populate dropdown lists, particularly beneficial when managing large sets of dropdown values. For example:

        1. Create a Lookup Table - This table includes 2 columns, both can be independently referenced in a report.

          image-20260211-182938.png

           

        2. Create one or more Fields - Create one or more Fields and enter the ColumnLookup syntax in the Possible Values (; or ColumnLookup) column to reference a Lookup Table column. The syntax is: ColumnLookup('LookupTableName','ColumnName')

          image-20260211-183400.png

           

        3. Report (Admin) - Add the Fields to a report.

          image-20260211-183929.png

           

        4. Report Editing - With a report like a Packages Dashboard report open, the dropdown list is available.

          image-20260211-184110.png

           

        5. Video - Here’s a video to demonstrate these steps.



    9. Is Expression – Check the Is Expression checkbox if you are entering an expression in the Expression field. See below for allowable expression variables, operators, and functions.

      1. Note: When Is Editable and Is Expression are both checked, the calculated value will be used as the default, but then a user will be allowed to edit the values.

      2. Tips:

        1. The Field’s Data Type needs to be set to Decimal whenever the value of the Field is used in a mathematical Expression.

        2. The Field’s Is Total property needs to be checked ON whenever the Field is referenced in a report where Item Type is Package and Package Dashboard is checked (i.e. a Packages Dashboard report) and is used to sum part values for a package (e.g. weight).

        3. Expressions referencing a part property that may not always be filled out or have a valid value should be wrapped with AsNumber()

          1. Example: AsNumber({Gauge}) ), as this will convert unrecognized values to 0.

          2. Example: AsNumber({Volume}), to get the total for Volume in Packages for pipes.

        4. When a field references text, it must be enclosed in single quotes. If you are not sure, try it both ways. For example, in this expression:
          if({CID}='2041' And {STRATUS.Part.TrackingStatus}='Ordered', {Length}, if({CID}='2041' And {STRATUS.Part.TrackingStatus}='Issued for Fabrication', {Length}, 0))

          1. {CID}='2041' - The CID value is returned as text.

          2. {STRATUS.Part.TrackingStatus}='Ordered' - A Tracking Status will be returned as text.

          3. {Length} - Length and other measurements will be returned as numbers, so they are not in single quotes.

        5. When editing an expression, some users have found that using a tool like Notepad++ makes it easier to see parentheses and other formatting than the Stratus dialog.

    10. Is Total – The Is Total field will sum the associated property value from every part in the package. When Is Total is checked, the field will return a single value, the total from all parts in the package or assembly, but are limited to only working with numeric values.

      Note: The Data Type "Array" should not be used in conjunction with the Is Total checkbox being checked. Array and Is Total are alternative solutions to the same problem.  “Is Total” is the original method while “Array” is the new method to solve the problem.

      1. Ex. Generate a sum of labor hours from all parts within a package.

      2. Ex. Generate the total weld diameter inches for pipe welds within a package.

      3. Ex. Generate the total weight of all parts within a package.

    11. Expression – Enter your expression using the variables, operators, and functions described below. Note: If you are using an expression, be sure to check the Is Expression checkbox.
      See the Field Reference and Examples page for syntax and examples.

    12. Unit - A unit is used for Station metrics on the Shops > Dashboard > Task Velocity column.

    13. ReferencesHelps administrators understand where the filters are being referenced. Click the references number to display the references (Type and Name).



    14. Delete - Click to delete a field. If a user attempts to delete a field that is used a Template, an error message similar to the following will display. This will help prevent accidentally deleting a field and the reports that use the field from failing.



  3. Variables

    1. Inside the expression, reference any reportable property name from the item or Stratus using curly brackets. For example:

      1. {STRATUS.Package.RequiredDT}

      2. {STRATUS.Field.Approved By}

      3. {Length}

      4. {Outside Diameter}

      5. etc.

  4. If an additional field is used on the Packages Dashboard and has been edited manually or via API, the field will display in the Package's Properties tab under Additional Fields. 

Fields Referenced in Report

When a report uses a STRATUS.Fields.X, where X is the name of the field, remember any fields that were used to create the STRATUS.Fields.X field must also be included in the list of report fields. For example:

  1. If in the report, a Report Field like STRATUS.Field.Fabrication Start Date is referenced;

     

  2. Then, review the field (Ex. STRATUS.Field.Fabrication Start Date) and determine what, if any fields, make up the field. In this case it is made up of STRATUS.Package.RequiredDT and STRATUS.Field.Fabrication Lead Time. As a result, both of these fields must also be included in the list of Report Fields in order for the STRATUS.Field.Fabrication Start Date to calculate.

General

Configure Checkbox

A Field configured as a checkbox can be added to a report and enables users to check or uncheck the checkbox.

A checkbox field can be used on a Packages Dashboard report.

  1. Configure a Field

    1. Data Type is one of the following:

      1. Array - Array is used to store multiple values of the same type in a single field (e.g., true;false;maybe;maybeNot)

      2. String – Supports alphanumeric characters and Concatenated Field results.

      3. Integer - Used to calculate Numbers or set a Boolean checkbox.

    2. Default Value - A single value from the Possible Values list that matches the data type.

    3. Is Editable - Checked

    4. Possible Values
      Values matching the data type, separated by semicolons without spaces (e.g., item1;item2;item3)

      1. Empty - Default is unchecked

      2. 1;0 where 1 = Checked checkbox, and 0 = Unchecked checkbox

      3. true;false where true = Checked checkbox, and false = Unchecked checkbox

      4. Left;Right where Left = Checked checkbox, and Right = Unchecked checkbox

    5. Is Expression

      1. Checked - Checked if an expression will be used.

      2. Unchecked - Unchecked if an expression will not be used.

    6. Is Total - Unchecked

    7. Expression

      1. Empty - Empty if an expression will not be used.

      2. Expression - An expression should be entered if Is Expression is checked.

        1. Ex. if(isBlank({STRATUS.Field.CJ_Package Delivery Log}),False,true)

  2. Configure a Report - The Report Field Format either matches or overrides the Field Format.

    1. Format

      1. String

      2. Boolean

    2. Example of all Boolean Field options:

      image-20251218-204623.png

       

    3. Example of all Boolean Field option results:

       

Configure Dropdown Option List

A Field configured as a dropdown list can be added to a report and enables users to choose a pre-determined option.

  1. Configure a Field

    1. Data Type is one of the following:

      1. Array - Array is used to store multiple values of the same type in a single field

      2. Decimal - Limits list to decimal values.

      3. String – Enables alphanumeric values.

      4. Integer - Limits list to integer values.

    2. Default Value (Optional)

      1. A single value from the Possible Values list that matches the data type.

    3. Is Editable (Required)

      1. Checked

    4. Possible Values (Required)
      Values matching the data type, separated by semicolons without spaces (e.g., item1;item2;item3)

      1. Array - Copper;PVC;Galvanized

      2. Integer: 1;2;3;4

      3. String: Crew 1; Crew 2; Crew 3

    5. Is Expression - Unchecked

    6. Is Total - Unchecked

  2. Configure a Report - The Report Field Format either matches or overrides the Field Format.

    1. Format

      1. String

 

Concatenated Field

A concatenated field is a good way to bring information from different fields into a single field that can help make a report more meaningful. For example, let's say you have a field for Material and a field for Gauge and want to bring them together in a single field. To concatenate these two fields:

  1. Create a Field where:

    1. Data Type = String because concatenated fields always return text.

    2. Is Expression = Checked

    3. Expression = {MaterialGauge}+" Gauge "+{Material}

      1. The syntax of this expression says, give me the Material Gauge, which is a number, the plus signs let you enter text, so in this case you'll get a space after the Material Gauge, the word Gauge, and then the Material.

  2. The result on a report would be a single field with the value of "24 Galvanized", for example.

Square Root

Example

36^(1/2)

This will return 6, similarly substituting 25 instead of 36 will return 5.

Pass Through Fields

Below is an example of how to format a Pass Through Field.

{Installation Cost}

"If" Statements and Data Conditioning

See the Field Reference and Examples page for syntax and examples.

If Statements

Example 1

Here is an example of a simple "if" statement:

The syntax of an if statement is:

  1. Data Type = Decimal

  2. Is Editable = Checked

  3. Expression = if({CID}=2041, {Length}, 0)

    1. This expression says, if the CID value is 2041, return the Length, if not, then it is false and ignore it.

Example 2 - Nested "if" Statement

A nested "If" statement provides flexibility to check for values.  

As an alternative to nested “if” statements, see the Lookup Tables feature under Tables (Admin).

Example 2a

These 3 nested conditional "If" statements evaluate whether the Tracking Status matches a specific value, then execute the corresponding calculation. This expression says:

  1. If the Tracking Status is Fabrication Complete, give me the results of {Installation Cost}*{STRATUS.Field.GTP Fabrication Labor Factor}

  2. If it is not Fabrication Complete, then check to see if the value is Shipped. If so, give me the results of {Installation Cost}*{STRATUS.Field.GTP Fabrication Labor Factor}.

  3. And so on until the end and if none of the tracking statuses have returned a value, then return false (i.e. 0).

if({STRATUS.Part.TrackingStatus}='Fabrication Complete', {Installation Cost}*{STRATUS.Field.GTP Fabrication Labor Factor},
if({STRATUS.Part.TrackingStatus}='Shipped', {Installation Cost}*{STRATUS.Field.GTP Fabrication Labor Factor},
if({STRATUS.Part.TrackingStatus}='Inspected', {Installation Cost}*{STRATUS.Field.GTP Fabrication Labor Factor}, 0)))

Example 2b

This expression results in a Length value only if the part is Pipe, not fittings. If the part CID is 2041 (which excludes fittings), report its Length value, otherwise ignore it.

if({CID}=2041, {Length}, 0)

Example 2c

This expression counts welded items. If CID is 2522 which is for joints and couplings, and its Install Type is welded, count it, otherwise set it to 0.

If({CID}='2522' And {Install Type}="Welded", 1, 0)

Example 2d

This expression conditions data to output the exact required wording instead of raw part property values.

If CID is 838 which is Clevis Hanger, call it All Thread Rod, otherwise use the actual Item Description.

If({CID}='838', 'All Thread Rod', {Item Description})

or

Get clearer size reporting—confusing Size values are replaced with readable alternatives, with {Size} as the fallback.

if({Size}='1/2"ø-1/2"ø', '1/2"ø', {Size})

Example 2e

This expression calculates a date value based on another date value. For any package that has a Required Date, subtract a Lead Time value (number of days) and calculate a date.

If(CreateDate(1900,1,1) > {Stratus.Package.RequiredDT}, 0, {Stratus.Package.RequiredDT}-{Stratus.Field.GTP Fabrication Lead Time})

Example 2f

This expression evaluates if the Tracking Status index number is greater than 10, meaning the part has reached a certain tracking status, then calculate the installation cost.

If({Stratus.Part.TrackingStatusIndex}>10,{Installation Cost}*{Stratus.Field.GTP Fabrication Labor Factor},0)

or

In this expression, if Tracking Status index number equals a specific number, then calculate a percentage (.15) of the installation cost.

If({Stratus.Part.TrackingStatusIndex}=10,({Installation Cost}*{Stratus.Field.GTP Fabrication Labor Factor}*.15))

Example 2g

This expression compensates for missing family or ITM data. If ALL THREAD TYPE is 3/8", report that (2) 3/8" washers are needed; otherwise it returns "No Washers."

If({ALL THREAD TYPE}= '3/8"', '(2) 3/8" Washers', 'No Washers')

 

Data Conditioning

As an alternative to creating these data conditioned fields, see the Lookup Tables feature under Tables (Admin).

Example 1 - Condition and Concatenate

This expression condition data for 2 different fields (C1 and C2), then concatenates them with an x in between (e.g. GRV x BEV).

if({CID}='2041', {Stratus.Field.GTP C1}+" x "+{Stratus.Field.GTP C2}, " ")

if({C1}="Grooved End", 'GRV',
if({C1}="Copper Ftg", 'PE',
if({C1}="Bevel End 37.5", 'BEV',
if({C1}="NoHub", 'PE',
{C1}))))

if({C2}="Grooved End", 'GRV',
if({C2}="Copper Ftg", 'PE',
if({C2}="Bevel End 37.5", 'BEV',
if({C2}="NoHub", 'PE',
{C2}))))

Then, once the data is conditioned, if the CID is 2041, give me the Item Description and give me the concatenated value, otherwise, just give me the Item Description.

if({CID}='2041', {Item Description}+" "+"("+{Stratus.Field.GTP End Prep}+")", {Item Description})

Example 2 - Rounding

This expression is setting a rounded value when a cut length is in between 2 values.

If({Length A}>0 and {Length A}<24, 24,
If({Length A}>24 and {Length A}<48, 48,
If({Length A}>48 and {Length A}<72, 72,
If({Length A}>72 and {Length A}<96, 96,
If({Length A}>84 and {Length A}<120, 120,
If({Length A}>120 and {Length A}<144, 144,
If({Length A}>120 and {Length A}<144, 144,
{Length A}))))))

Example 3 - Material Translation

This expression standardizes inconsistent database values and is typically used in a dashboard report, not for ordering.

if({Material}="A53", 'Carbon Steel',
if({Material}="A53 Double Radom", 'Carbon Steel',
if({Material}="Carbon Steel", 'Carbon Steel',
if({Material}="Cast Iron", 'Carbon Steel',
if({Material}="Ductile Iron", 'Carbon Steel',
if({Material}="Forged Steel", 'Carbon Steel',
if({Material}="Malleable Iron", 'Carbon Steel',
'No Material Defined'))))))

Example 4 - Joint Method

This expression standardizes and simplifies inconsistent database values to Welded, Flanged, or Threaded.

if({C1}="BE", 'Welded',
if({C1}="150 FF Flange", 'Flanged',
if({C1}="MPT", 'Threaded',
if({C1}="HexEnd FPT", 'Threaded',
if({C1}="Copp MPT", 'Threaded',
if({C2}="BW", 'Welded',
'No Joint Defined'))))))