Show only results for:












Central Model Repository

The Central Model Repository (CRM) was introduced with Portal and replaces the model hosting folder and the model folder on the renderserver with a centrally managed system. UDiTH Models are imported into the CMR to be available in your organisation.

Concept

Model

A model is created the first time a modelversion is imported. It is identified by a model identifier. Each model can have multiple modelversions. The model identifier can be unique. Each model also stores a description, tags, title, preview image and logical path.

The identifier can contain alpha numeric values and _

Modelversion

Each model can be identified by its model identifier and modelversion identifier. The latest modelversion is also available via the latest modelversion identifier. It is not possible to manually assign the modelversion identifier. When a model is requested a specific model version is always required. If not specified the alias tag latest will always be used. The same modelversion identifier can be used across multiple models but needs to be unique inside a model. Each modelversion is only a snapshot in time. It contains no delta information.

The identifier can contain alpha numeric values and _

Storage

The storage is entirely managed by Portal. It is not possible to manually interfear in the process.

Import

A model need to be imported which will tranfer it into the storage system. During this time the model and modelversion identifier are specified and other settings need to be defined.

Attribute Import

It is possible to extract Attributes into a tag register which allows to use the Portal search to search for model objects (3D & PID) across models.

Import Process

⚠️WARNING⚠️
In the current version the models will need to be zipped by the admin before import. This will change in future UDiTH BUilder versions where this process will be automated. Please ensure that the data folder is at the top level inside the zip. Otherwise the model will be rejected during the import process.
  1. Place the zip file in the import folder in the server
  2. Navigate to the CMR -> Modelimport section
  3. Select the model to import Model Import Selection
  4. Choose either a new model or select an existing model to add a new modelversion to the model Model Import new or existing model
  5. Fill out the form by specifing a Name, Model ID, Folder, Version ID, preview image, Description, Tags, number of preloaded and maximal instances for BBV. For the tag register you can choose which attributes to import. Import can also be disabled either here or globally via configuration. ⚠️ DO NOT IMPORT ALL ATTRIBUTES New Model
  6. After submitting the form the model import process starts. The model is available for viewing after the transfer to storage is completed. The attribute import can take longer.
  7. If choosing the form will be prefilled by the contents of the last import

Automated Import

It is possible to automate the process by specifing a modelDefinition.json file inside the Data folder.

Many attributes can be ignored and can be left or removed. The default behavior in this case is to use the default value (old value in case of adding a new modelversion to a model).

During a model first import ensure that the Model section is filled out fully. When an existing model exists only ExternalIdentifier is required. If specified this will overwrite the attributes also for existing models.

If AutoApprove is set an auto import is attempted. If this fails for any reason a manuell approve can still be attemted.

Format

{
    "Cmr": {
        "ProcessOptions": {
            "SkipProcessing": false,
            "MaxRetainedModelVersions": null,
            "AutoApprove": false
        },
        "ModelVersion": {
            "ExternalIdentifier": "REQUIRED",
            "Description": null,
            "Tags": null,
            "AttributesPidProcess": null,
            "Attributes3DProcess": null
        },
        "Model": {
            "ParentFolderPath": null,
            "Name": "REQUIRED on first import else can be null",
            "ExternalIdentifier": "REQUIRED"
        }
    }
}

Example First Import

{
    "Cmr": {
        "ProcessOptions": {
            "AutoApprove": true
        },
        "ModelVersion": {
            "ExternalIdentifier": "2025_10_23",
            "Description": "this is optional",
            "Tags": ["this", "is", "also", "optional"],
            "AttributesPidProcess": ["PID", "attributes", "to", "import"],
            "Attributes3DProcess": ["3D", "attributes", "to", "import"],
        },
        "Model": {
            "ParentFolderPath": "Demoplants",
            "Name": "Sample Demoplant",
            "ExternalIdentifier": "sample"
        }
    }
}

Example Second Import

{
    "Cmr": {
        "ProcessOptions": {
            "AutoApprove": true
        },
        "ModelVersion": {
            "ExternalIdentifier": "2025_10_24"
        },
        "Model": {
            "ExternalIdentifier": "sample"
        }
    }
}