HomeGuidesAPILog In

Compatibility Mode

Compatibility mode provides the functionality of continuing to use specific older features in a new version of the product. This determines the behavior of a project when executed by the engine by allowing existing projects to maintain their designed behavior while new projects take advantage of new features or improvements of the current product.

Existing projects are loaded in Compatibility Mode while newly created projects will default to the current version. However, this can be changed back from the Project Properties menu item in Design.

Any compatibility setting is saved within the project.


In older compatibility modes, when the Send to REST Service Action Send as Multi-part attribute is set to “true”, SmartIQ will send the File parts from the Action Documents FIRST before sending the remaining metadata elements in later parts.

For projects in v29 compatibility mode, the File parts will be sent LAST, which is better because metadata values are sent first, so the service can determine where to stream the file to.


  • Decimal places in formulas will always use a period (.) and '#MM/dd/yyyy#' for dates. However, the recommended date format for formulas is still '#yyyy-MM-dd#'.
  • Older compatibility modes always generated text files (csv, txt, html) in UTF8 with byte order mark (BOM) encoding.
    Projects in v14 compatibility mode will use the template's encoding for the generated file. If the template does not have a BOM, then the default encoding will be UTF8 without BOM.


  • The Date diff function in V13 uses the wholeUnits parameter for Day, month and year comparison if provided. If not, it is assumed to be false. Previous versions ignore the wholeUnits parameter and always assumes it to be true.
  • Attachment for content library questions will be included if it is currently active. Previous versions only include the attachment in the generated files if the question is visible and has been shown to the user.
  • The value given to an input referencing a specific answer in a multi-choice question is the value of the specific answer. If no selection has been made, it remains blank. Previous versions use the value of the first selected answer in the question.


  • Answer format is always used if the answer is referenced directly. If an unformatted value is required, reference the question itself. Alternatively, another answer can be added without a format.
    The field will be named "Format" instead of "Document Format" in this mode.
  • The multi-choice answer value summing feature has been disabled. All selected numeric values would be summed instead of pipe separated.
  • New and improved the formula engine that changes the formula into an expression tree on start up. This improves the following:
    • Sections of the tree may not need to be evaluated.
    • Parameter values into functions do not need to be pre-converted into numbers and dates. The function itself can do what is appropriate.
    • Simpler functions
      Additionally, support for the use of Concat to join strings and references together instead of using references within quoted strings.
  • Template repeaters are only set at generation. During normal form use, it will return multiple rows.
  • Workflow saves all active questions in the first state of a workflow.


References to inactive items return an "empty" value for the following:

  • Data source answer
  • Variable answers
  • Every other question type except the following:
    • Group and auto logic answers always return false
    • Custom answer returns null
    • Data source answer (Image) returns null
    • Data source multiple select returns no selections and no rows
    • [rownumber] returns -1
    • [rowcount] returns 0
    • Repeating pages and sections will return no rows and any count against them returns 0
    • Content library question returns null and has no selection properties

Once a question becomes active again, it will notify child questions that the value has changed. The original value is not lost when inactive.


References to inactive items return their current value.