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
Property | Value | Description | Required |
---|---|---|---|
schema | 3 | Declares the schema version that the manifest file uses. | ✓ |
products | See Products. | A collection of products to deploy. | ✓ |
Products
Property | Value | Description | Required |
---|---|---|---|
type | A 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:
Property | Value | Description | Required |
---|---|---|---|
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 |
model | See Model properties | Specifies the characteristics of the model. | Application |
packages | See 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. | |
dependencies | See Database dependency values | A 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.
Property | Value | Description | Required |
---|---|---|---|
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
Value | Checked during | Description | Supported in Deployment Center |
---|---|---|---|
CompatibilityLevel100 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| Checks if the Full-Text Search feature is installed on the targeted SQL Server instance. | >= 1.9.0 |
Invalid |
| 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.
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:
Property | Value | Description | Required |
---|---|---|---|
path |
| A directory path to the root of a generated database application package. Relative paths are considered relative to the location of the manifest file. | ✓ |
supportedVersions | See 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.
Property | Value | Description | Required |
---|---|---|---|
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 |
files | A 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". Thepath
of the 2021.3 -> 2022.1supportedVersion
resolves to "C:\Manifests\IAM\Upgrade\2022.1".
Example:
- JSON
- YAML
{
"schema": 3,
"products": [
{
"type": "IAM",
"version": "2022.1",
"dependencies": [
"CompatibilityLevel140"
],
"packages": {
"upgrade": {
"path": "Upgrade",
"supportedVersions": [
{
"upgradesFrom": "2021.3",
"upgradesTo": "2022.1",
"path": "2022.1"
}
]
}
}
}
]
}
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
Property | Value | Description | Required |
---|---|---|---|
path |
| 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
- JSON
- YAML
{
"schema": 3,
"products": [
{
"type": "Universal",
"path": "GUI/Universal"
},
{
"type": "Indicium",
"path": "foldername/Indicium"
},
{
"type": "Windows",
"path": "GUI/Windows"
},
{
"type": "Web",
"path": "GUI/Web"
}
]
}
schema: 3
products:
- type: "Universal"
path: "GUI/Universal"
- type: "Indicium"
path: "GUI/Indicium"
- type: "Windows"
path: "GUI/Windows"
- type: "Web"
path: "GUI/Web"
- type: "Upcycler"
path: "GUI/Upcycler"
IAM
- JSON
- YAML
{
"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"
}
}
}
]
}
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
- JSON
- YAML
{
"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"
}
}
}
]
}
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
- JSON
- YAML
{
"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"
}
}
}
]
}
schema: 3
products:
- type: "Application"
model:
id: "MY_APP"
version: "1.10"
metaVersion: "2021.3"
projectFolder: "D:\\SoftwareFactory\\DevApplications"
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:
- JSON
- YAML
{
"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"
}
]
}
}
}
]
}
schema: 3
products:
- type: "Application"
model:
id: "MY_APPLICATION_MODEL"
version: "3.0.0"
metaVersion: "2023.2"
# Encoding does not have to be specified as utf-8 since that is now the default.
packages:
upgrade:
path: "Upgrade"
supportedVersions:
- upgradesFrom: "1.0.0"
upgradesTo: "2.0.0"
# 1.0.0 to 2.0.0 was generated by a 2021.3 Software Factory and thus uses windows-1252 encoding.
#
encoding: "windows-1252"
files:
- "1.0.0/020_Upgrade.sql"
# etc.
- upgradesFrom: "2.0.0"
upgradesTo: "3.0.0"
# 2.0.0 to 3.0.0 was generated by a 2023.2 Software Factory so the scripts use the new utf-8 default.
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:
- JSON
- YAML
{
"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"
}
]
}
}
}
]
}
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"