Skip to main content

Specification schema V3

This chapter describes the structure and properties of a manifest that uses schema specification V3. Manifest schema specification V3 is supported in Software Factory 2023.2 and higher. For older versions, refer to schema version 2.

Root properties

PropertyValueDescriptionRequired
schema3Declares the schema version that the manifest file uses.
productsSee Products.A collection of products to deploy.

Products

PropertyValueDescriptionRequired
typeA string with one of the following values:

Declares the type of product that is being described to the Deployment Center.

Depending on the value, different properties are expected.

Database products

Database products are used for applications generated by a Software Factory.

Valid types for database products are:

  • IAM
  • SF
  • Application
  • Upcycler

Each database product has a collection of properties:

PropertyValueDescriptionRequired
version"2018.2", "2019.1", "2019.1", "1.00", "1.10" etc.The version of the IAM, SF, or Upcycler.

Note: For SF and IAM types this value is considered equal to the version property and is therefore ignored.
IAM / SF / Upcycler
modelSee Model propertiesSpecifies the characteristics of the model.Application
packagesSee Database packages.Describes which actions the Deployment Center can perform for this database product.
defaultDatabaseName"THINKWISE_IAM"A default database name to use during the deployment of an Install package.
The specified default database name is available to select in the Deployment Center GUI if a database with that name is available on the connected server.
Note: Only used in the Deployment Center GUI.
dependenciesSee Database dependency valuesA collection of strings that indicate pre-conditions that the database or database engine must satisfy before an install or upgrade can be performed.

Model properties

The model properties are only used if you have specified the 'Application' type.

PropertyValueDescriptionRequired
version"2018.2", "2019.1", "2019.1", "1.00", "1.10" etc.The version of the application contained in the installation package.
id"MY_APP"A string corresponding to the application's model ID in the SF that generated the installation/upgrade files.
metaVersion"2019.1", "2019.1" etc.A string corresponding to the IAM/SF version an application is targeting.

Database dependency values

ValueChecked duringDescriptionSupported in Deployment Center
CompatibilityLevel100
  • Install
  • Upgrade
Checks if the targeted database (engine) compatibility level is set to 100 (SQL Server 2008 (R2)) or higher during an upgrade or installation.

Note: This is the minimum level for scripts generated by SF/IAM installations from 2017.1 until 2019.1.
>= 1.8.0
CompatibilityLevel110
  • Install
  • Upgrade
Checks if the targeted database (engine) compatibility level is set to 110 (SQL Server 2012) or higher during an upgrade or installation.

Note: This is the minimum level for scripts generated by 2019.1 SF/IAM installations and onwards.
>= 1.8.0
CompatibilityLevel120
  • Install
  • Upgrade
Checks if the targeted database (engine) compatibility level is set to 120 (SQL Server 2014) or higher during an upgrade or installation.>= 1.11.0
CompatibilityLevel130
  • Install
  • Upgrade
Checks if the targeted database (engine) compatibility level is set to 130 (SQL Server 2016) or higher during an upgrade or installation.>= 1.11.0
CompatibilityLevel140
  • Install
  • Upgrade
Checks if the targeted database (engine) compatibility level is set to 140 (SQL Server 2017) or higher during an upgrade or installation.>= 2.0.0
CompatibilityLevel150
  • Install
  • Upgrade
Checks if the targeted database (engine) compatibility level is set to 150 (SQL Server 2019) or higher during an upgrade or installation.>= 2.0.0
FullTextSearch
  • Install
  • Upgrade
Checks if the Full-Text Search feature is installed on the targeted SQL Server instance.>= 1.9.0
Invalid
  • Install
  • Upgrade
Represents an unrecognized dependency which will always block deployment.

If you encounter one of these, check if the dependency value you are trying to use is correctly spelled inside the manifest and supported by the Deployment Center version that is being used.

Database packages

A database package is described by a key that specifies what kind of package it is:

  • install
  • upgrade
  • hotfix
  • syncModel

Include a "syncModel" package to execute IAM synchronization during deployment. This is mandatory for the "IAM" product type, because every IAM is expected to synchronize at least its own model. If you do not include a syncModel package for "SF", "Application", or "Upcycler", the IAM synchronization step will be skipped during deployment.

note

Database products are only considered full products when they declare at least one package property value.

Each of the database package keys contains a collection of properties that further define the characteristics of the package:

PropertyValueDescriptionRequired
path
  • "IAM\\Install"
  • "D:\installation_packages\IAM\Install"
  • etc.
A directory path to the root of a generated database application package.

Relative paths are considered relative to the location of the manifest file.
supportedVersionsSee supported upgrade version properties.A collection of possible upgrade steps that are interpreted together as an upgrade graph. You can specify more than one upgrade path from the same source version. The Deployment Center will always select the path with the fewest steps.
We recommend that upgrades be performed in the order they were developed.
Upgrade
encoding"windows-1252" or "utf-8"Possibility to override the encoding for script files. See Encoding.
Default encoding is "utf-8".

Supported upgrade versions

These properties are used to describe upgrade paths that the Deployment Center can use when upgrading to the version that a database product declares.

PropertyValueDescriptionRequired
upgradesFrom"2019.0", "1.0.0" etc.The source version from which this upgrade step will be executed.
upgradesTo"2019.1", "1.1.0" etc.The version that the database product which is targeted for an upgrade will have when all files have been executed.

Having an incomplete or looping upgrade path results in an invalid Upgrade product.
path"1.1.0", "2019.2", etc.The directory that contains the upgrade scripts.files or path
filesA collection of path strings.Absolute or relative path values to the files needed to perform the upgrade from the upgradesFrom version to the upgradesTo version.

Files are executed by the Deployment Center in the order they are inserted into the collection.

Relative paths are considered relative to the computed value of the database package's path property.

Use path for a compact manifest.
files or path
encoding"windows-1252"The encoding of the supported version. By default, the encoding is set to utf-8. If you want to use windows-1252 instead, you can specify this here or on the package level.

Rules for the path property:

  • Only the immediate directory is scanned for .sql files. Subdirectories will be skipped.

  • All .sql files inside the specified directory must adhere to the <order/sequence number>_<code file name>.sql format the Software Factory uses to generate the code files.

  • The path of a supportedVersion is relative to the path of the upgrade package, which in turn is relative to the location of the manifest file.

  • Using the manifest below as an example:

    If the manifest file is located at "C:\Manifests", the path of the upgrade package resolves to "C:\Manifests\IAM\Upgrade". The path of the 2021.3 -> 2022.1 supportedVersion resolves to "C:\Manifests\IAM\Upgrade\2022.1".

Example:

{
"schema": 3,
"products": [
{
"type": "IAM",
"version": "2022.1",
"dependencies": [
"CompatibilityLevel140"
],
"packages": {
"upgrade": {
"path": "Upgrade",
"supportedVersions": [
{
"upgradesFrom": "2021.3",
"upgradesTo": "2022.1",
"path": "2022.1"
}
]
}
}
}
]
}

GUI/Indicium products

These are the properties for all products that are not a database application product.

Valid types for these products are:

  • Universal
  • Indicium
  • Windows
  • Web
  • Upcycler
PropertyValueDescriptionRequired
path
  • "GUI\\Windows"
  • "D:\installation\GUI\Web"
  • etc.
A directory path to the root of the product files.

Relative paths are considered relative to the location of the manifest file.

Examples

Universal/Indicium/Win/Web

{
"schema": 3,
"products": [
{
"type": "Universal",
"path": "GUI/Universal"
},
{
"type": "Indicium",
"path": "foldername/Indicium"
},
{
"type": "Windows",
"path": "GUI/Windows"
},
{
"type": "Web",
"path": "GUI/Web"
}
]
}

IAM

{
"schema": 3,
"products": [
{
"type": "IAM",
"version": "2021.3",
"defaultDatabaseName": "THINKWISE_IAM",
"dependencies": [
"CompatibilityLevel130"
],
"packages": {
"install": {
"path": "IAM/Install",
},
"upgrade": {
"path": "IAM/Upgrade",
"supportedVersions": [
{
"upgradesFrom": "2021.1",
"upgradesTo": "2021.2",
"files": [
"2021.2\\020_Upgrade.sql",
"2021.2\\030_Checks.sql",
"2021.2\\040_Constraints.sql",
"2021.2\\050_Indexes.sql",
"2021.2\\060_Functions.sql",
"2021.2\\065_Table_valued_functions.sql",
"2021.2\\070_Views.sql",
"2021.2\\080_Procedures.sql",
"2021.2\\090_Instead_of_triggers.sql",
"2021.2\\100_Triggers.sql",
"2021.2\\110_Tasks.sql",
"2021.2\\120_Defaults.sql",
"2021.2\\130_Layouts.sql",
"2021.2\\140_Contexts.sql",
"2021.2\\145_Badges.sql",
"2021.2\\150_Processes.sql",
"2021.2\\999_Apply_roles_on_database.sql",
"2021.2\\999_Manual.sql"
]
},
{
"upgradesFrom": "2021.2",
"upgradesTo": "2021.3",
"files": [
"2021.3\\020_Upgrade.sql",
"2021.3\\030_Checks.sql",
"2021.3\\040_Constraints.sql",
"2021.3\\050_Indexes.sql",
"2021.3\\060_Functions.sql",
"2021.3\\065_Table_valued_functions.sql",
"2021.3\\070_Views.sql",
"2021.3\\080_Procedures.sql",
"2021.3\\090_Instead_of_triggers.sql",
"2021.3\\100_Triggers.sql",
"2021.3\\110_Tasks.sql",
"2021.3\\120_Defaults.sql",
"2021.3\\140_Contexts.sql",
"2021.3\\150_Processes.sql",
"2021.3\\999_Apply_roles_on_database.sql",
"2021.3\\999_Manual.sql"
]
}
]
},
"hotfix": {
"path": "IAM/Hotfixes"
},
"syncModel": {
"path": "IAM/MetaModel"
}
}
}
]
}

Software Factory

{
"schema": 3,
"products": [
{
"type": "SF",
"version": "2021.3",
"defaultDatabaseName": "THINKWISE_SF",
"dependencies": [
"CompatibilityLevel130",
"FullTextSearch"
],
"packages": {
"install": {
"path": "SF/Install",
},
"upgrade": {
"path": "SF/Upgrade",
"supportedVersions": [
{
"upgradesFrom": "2021.1",
"upgradesTo": "2021.2",
"files": [
"2021.2\\020_Upgrade.sql",
"2021.2\\030_Checks.sql",
"2021.2\\040_Constraints.sql",
"2021.2\\050_Indexes.sql",
"2021.2\\060_Functions.sql",
"2021.2\\065_Table_valued_functions.sql",
"2021.2\\070_Views.sql",
"2021.2\\072_History_Functions.sql",
"2021.2\\074_History_Views.sql",
"2021.2\\080_Procedures.sql",
"2021.2\\081_Data_Procedures.sql",
"2021.2\\090_Instead_of_triggers.sql",
"2021.2\\100_Triggers.sql",
"2021.2\\110_Tasks.sql",
"2021.2\\120_Defaults.sql",
"2021.2\\130_Layouts.sql",
"2021.2\\140_Contexts.sql",
"2021.2\\145_Badges.sql",
"2021.2\\150_Processes.sql",
"2021.2\\999_Manual.sql"
]
},
{
"upgradesFrom": "2021.2",
"upgradesTo": "2021.3",
"files": [
"2021.3\\020_Upgrade.sql",
"2021.3\\030_Checks.sql",
"2021.3\\040_Constraints.sql",
"2021.3\\050_Indexes.sql",
"2021.3\\060_Functions.sql",
"2021.3\\065_Table_valued_functions.sql",
"2021.3\\070_Views.sql",
"2021.3\\072_History_Functions.sql",
"2021.3\\074_History_Views.sql",
"2021.3\\080_Procedures.sql",
"2021.3\\081_Data_Procedures.sql",
"2021.3\\090_Instead_of_triggers.sql",
"2021.3\\100_Triggers.sql",
"2021.3\\110_Tasks.sql",
"2021.3\\120_Defaults.sql",
"2021.3\\130_Layouts.sql",
"2021.3\\140_Contexts.sql",
"2021.3\\145_Badges.sql",
"2021.3\\150_Processes.sql",
"2021.3\\999_Manual.sql"
]
}
]
},
"hotfix": {
"path": "SF/Hotfixes"
}
"syncModel": {
"path": "SF/MetaModel"
}
}
}
]
}

Application

{
"schema": 3,
"products": [
{
"type": "Application",
"model": {
"id": "MY_APP",
"version": "1.10",
"metaVersion": "2021.3"
},
"defaultDatabaseName": "MY_APP",
"dependencies": [
"CompatibilityLevel130"
],
"packages": {
"install": {
"path": "MY_APP/Install",
},
"upgrade": {
"path": "MY_APP/Upgrade",
"supportedVersions": [
{
"upgradesFrom": "1.00",
"upgradesTo": "1.10",
"files": [
"1.10\\020_Upgrade.sql",
"1.10\\030_Checks.sql",
"1.10\\040_Constraints.sql",
"1.10\\050_Indexes.sql",
"1.10\\060_Functions.sql",
"1.10\\070_Views.sql",
"1.10\\080_Procedures.sql",
"1.10\\090_Instead_of_triggers.sql",
"1.10\\100_Triggers.sql",
"1.10\\110_Tasks.sql",
"1.10\\120_Defaults.sql",
"1.10\\130_Layouts.sql",
"1.10\\140_Contexts.sql",
"1.10\\145_Badges.sql",
"1.10\\150_Processes.sql",
"1.10\\999_Apply_roles_on_database.sql"
]
}
]
},
"syncModel": {
"path": "MY_APP/MetaModel"
}
}
}
]
}

Encoding

Schema version 3 uses the utf-8 encoding to interpret scripts by default, just like Software Factory 2022.1 and higher.

If you use an older version of the Software Factory, you can still use the windows-1252 encoding by specifying it on the package or "supportedVersions" level.

If the encoding is changed at the package level, the Deployment Center will use the same encoding at the underlying "supportedVersions" levels.

Example:

{
"schema": 3,
"products": [
{
"type": "Application",
"model": {
"id": "MY_APPLICATION_MODEL",
"version": "3.0.0",
"metaVersion": "2023.2"
},
"packages": {
"upgrade": {
"path": "Upgrade",
"supportedVersions": [
{
"upgradesFrom": "1.0.0",
"upgradesTo": "2.0.0",
"encoding": "windows-1252",
"files": [
"1.0.0/020_Upgrade.sql"
]
},
{
"upgradesFrom": "2.0.0",
"upgradesTo": "3.0.0",
"path": "3.0.0"
}
]
}
}
}
]
}

In this example, the windows-1252 encoding is only used for the upgrade from 1.0.0 to 2.0.0. No encoding is specified for the upgrade from 2.0.0 to 3.0.0, so the default utf-8 encoding will be used.

If you want to use the windows-1252 encoding for the entire upgrade, add the encoding property to the package level instead:

{
"schema": 3,
"products": [
{
"type": "Application",
"model": {
"id": "MY_APPLICATION_MODEL",
"version": "3.0.0",
"metaVersion": "2023.2"
},
"packages": {
"upgrade": {
"path": "Upgrade",
"encoding": "windows-1252",
"supportedVersions": [
{
"upgradesFrom": "1.0.0",
"upgradesTo": "2.0.0",
"files": [
"1.0.0/020_Upgrade.sql"
]
},
{
"upgradesFrom": "2.0.0",
"upgradesTo": "3.0.0",
"path": "3.0.0"
}
]
}
}
}
]
}

Was this article helpful?