Before you start
Make sure you have the following:- A project registered in the CDF application.
- The CDF API and the CDF application registered in Microsoft Entra ID and Microsoft Entra ID and CDF groups set up to control access to CDF data.
- Assets in the CDF project populated in the
CogniteAssetconcept. - URLs in your allowlist.
Create data modeling spaces
Maintain stores asset data in data models. You need to create at least 3 spaces to store your data and data models.- Python SDK
- API
yourRootLocation with your root location/asset name in yourRootLocation_source_data, yourRootLocation_app_data.Set up access
You can use your existing identity provider (IdP) framework to manage access to Maintain and choose admin users. Maintain supports Microsoft Entra ID, Microsoft’s cloud-based identity and access management service. By creating groups, you can assign different sets of capabilities to users and give each group different access rights.Create an admin group
Create a group of users who can configure the Maintain application across all locations. See also how to configure locations.Navigate to Manage access
Create a group
industrial_tools_admin.Assign capabilities
read and write access to all capabilities with the scope All, or assign the minimum set of capabilities.Create user groups
Create groups of users who can view activities, create plans and campaigns, and work with different layouts. You can create several groups with different capabilities. For example:Populate data models
All data for Maintain is stored within data models, with a few exceptions. Generally, most tabular data exists in CDF RAW. Once the data is in RAW, you can use transformations to change this data into one of the following data models, depending on the view.Core data models
Maintain requires specific data models to function. Missing models will cause features to fail silently or prevent the app from loading entirely. The following concepts are part of Cognite’s core data model and must be available in your CDF project:Common data model issues
If you encounter issues with your data models, see the table for causes and fixes.Data entities to populate
Maintain-managed data entities
The following data entities are created automatically by Maintain when users create plans, layouts, and annotate diagrams. You don’t need to populate instances manually, but you must ensure the data model views exist and the app data space is properly configured.appDataInstanceSpace (for example, yourLocation_app_data). The view definitions come from the cdf_maintain space or your custom data model space if you’ve extended them.Use the Cognite Toolkit
The Cognite Toolkit is a command-line tool for deploying Maintain configurations to CDF. Understanding its commands and flags is essential for efficient development and troubleshooting.Configure Maintain
Once you have data ingested, you can configure Maintain to use it.Sign in to Maintain
Select spaces
yourRootLocation_source_data) and for the application data (yourRootLocation_app_data).Extend data models
Views contain a group of properties that you can change for specific cases. By default, Maintain uses the Cognite process industries data model that extends the core data model to meet the requirements for the process industries. You can customize entity definitions or views, such asCogniteAsset and CogniteMaintenanceOrder, by adding properties that are specific to your operations. For example, to extend the CogniteMaintenanceOrder property, you can create a new view and add the Cost field to this property.
In Maintain, you can filter on entities such as activities and assets, using views defined in the cdf_idm (Process industries data model), cdf_cdm (Core data model) spaces, or the space with your custom views.
To set up how you want to query CDF data modeling:
Sign in to Maintain
Open configuration
View mappings
Configure spaces
Save changes
Field configuration
Field Configuration lets you choose which fields to show, how they look in the user interface, and how you can use the fields. The Field Configuration is a JSON object that contains one key-value pair for each field in the activity view type that should appear in Maintain. The key should be the name of the field in the activity view type, while the value is a JSON object containing the configuration of that field in Maintain. This example shows two configured fields:Configure fieldSubtype URL option
You can define a field with"fieldSubtype": "URL". The underlying value of the field must be a valid URL. Optionally, you can specify "urlDisplayText" which determines the text shown in the table. If provided, the table cell displays the defined text. If not provided, the default display text is "Link".
If all conditions are met, the link will:
- Render in the table in blue and be clickable.
- Open in a new browser tab pointing to the given URL.
sapLink field:
Color coding of fields
You can configure color coding for the Gantt chart and the Activity table. If you’ve configured color coding for the specific fields, Maintain lets you color-code the Gantt bars. The color coding is defined by providing a specific color for each value of the field. By default, all values without explicit color coding are gray. You can set the color coding in the Field Configuration. This example shows how to configure color coding for thematerialStatus field:
"OK", it will be colored green; if it’s "MISSING", it will be colored red. This field will be colored both in the table and the Gantt chart.
Operation field configuration
Operation field configuration lets you customize which fields appear on operation rows in the activity card, their display order, and their labels. Without this configuration, Maintain shows a fixed set of fields (type, title, mainResource, and personHours) in a predetermined order.
When the MAINTAIN_operation_field_config toggle is enabled for your environment, the Operation field configuration section appears in the app config modal.
The following table shows how the toggle state and configuration affect the UI:
Field types
Operation fields fall into two categories: core fields with specialized rendering and generic fields rendered as plain text. Core fields have specialized rendering:systemStatus, numberOfMainResource, sourceId, startTime, or description. Generic fields support string, number, and date values. Date values are formatted using locale settings. Fields with null, undefined, or object values are skipped.
Sorting and display
Maintain sorts operation fields using these rules:- Fields with
orderInOperationRowdefined are sorted in ascending order (lower values first). - Fields with an order value appear before fields without one.
- Fields without an order value are sorted alphabetically by field name.
displayInTable set to true are rendered inline in a single row. Long values on title and generic fields are capped at 65% max-width with ellipsis truncation.
Tooltip behavior
When you configure analias, tooltips show the alias followed by the value, for example, “Discipline: MECH”. Without an alias, core fields show their default tooltip, and generic fields show the raw value.
Enable operation field configuration
To enable operation field configuration for a new environment, complete the following steps:Update the data model view
- CDF_AppLocationConfig (new)
- APM_Config (legacy)
CDF_AppLocationConfig view, no changes are needed. The operationFieldConfiguration field is already included.Enable the feature toggle
MAINTAIN_operation_field_config toggle for the target environment and project.Configure fields
- Open the app config modal in Maintain.
-
In the Field operation configuration textarea, enter the JSON configuration. For example:
- Select Apply.
Validate
- Verify that operation rows display fields in the configured order with aliases in tooltips.
- Reopen the config modal and confirm that the configuration persists.
Disable operation field configuration
To disable operation field configuration, turn off theMAINTAIN_operation_field_config toggle. The UI immediately falls back to the default layout. No data migration or cleanup is needed as Maintain ignores the stored configuration when the toggle is off.
Feature configuration
You can configure optional features in Maintain, such as time and date, landing page, and language.Landing page configuration
You can configure the landing page to show the user’s name. By default, the page shows a welcome message without a name. The name of a user depends on the customer’s IdP, so the way to format the name is different for each customer. If you set thedisplayNameRegex property in Feature Configuration to a regular expression with a capture group for “name”, Maintain shows only the matching substring in the header. For example, if the customer has a “last_name, first_name” format in their IdP, the following configuration can be used to display “Welcome, first_name”:
Language configuration
Maintain supports multiple languages. When signing in for the first time, you can see a list of available languages. If you need certain languages to be available, set theavailableLanguages property in Feature Configuration.
This example shows how to set the English and German languages:
Customer-specific language configuration
By default, Maintain supports localization of native application strings only. Custom strings aren’t translated automatically and there are features that require manual translation:- Naming of fields in the data model. See Field Configuration >
alias.
Time and date configuration
To configure how dates are formatted globally in Maintain, set the following keys undertimezoneConfiguration in Feature Configuration:
Gantt
The Gantt lens is added by default. To remove the Gantt lens, set"disabled" to true in Feature Configuration:
Operations
To add operations, set"enabled" to true in Feature Configuration:
3D and digital twin
The 3D feature is added by default. To remove the functionality, set"disabled" to true in Feature Configuration:
Basic configuration
The 3D configuration requires configuring the 3D models (locations). You can do this in Maintain > your.Config > Root Location Configuration. Make an entry in this JSON object for each location, for example, a 3D model to visualize. Each entry needs to have the following properties:Grid zones
Grid zones let you divide your 3D models and 2D documents into logical areas for easier navigation and activity mapping. When configured, users can view zones as overlays and navigate to specific zones from activities. To link activities to grid zones, populate thegridReference property on activities. Use the naming convention [deck level]_[grid zone] with an underscore separator, for example, LEVEL1_GRID-10. This ensures uniqueness across deck levels and allows Maintain to update both attributes when mapping activities to zones.
3D grid zones
3D grid zones use a JSON file stored in CDF Files to define the zone bounding boxes. You need one JSON file per location.Add grid zones in Feature Configuration
"enableGridZones" to true in Feature Configuration:Create a grid zones file
zone identifier and 3D bounding box coordinates with min and max points (x, y, z):floc (functional location) and platform can also be included.Upload the file to CDF
Link the file to your location
gridZonesFileId property with the external ID of the uploaded file:2D grid zones
2D grid zones use data modeling to define zone areas in documents.Add grid zones in Feature Configuration
"enabled" to true in Feature Configuration:Populate the grid zones data model
MaintainFileGridZoneAnnotations view in your app data space. Each zone annotation links a zone to a specific area in a document:x1: 0.1 means 10% from the left edge of the document, and (0, 0) represents the top-left corner.2D viewer
The 2D viewer functionality is added by default. To remove this functionality, set"disabled" to true in Feature Configuration:
Supported document types
Maintain supports theapplication/pdf MIME type (Multimedia Internet Mail Extensions) documents. Other document types won’t appear in the search in Maintain.
Document type resolution
Maintain resolves the document type differently depending on whether your environment uses the Industry Data Model (IDM) or metadata-based configuration.- IDM environments
- Metadata-based environments
category.code property on the CogniteFile concept in the CDF Core Data Model.If category.code is not set or empty, Maintain falls back to the metadata-based resolution described below.Migration: metadata to IDM document types
Maintain currently supports both paths for backward compatibility during the transition to IDM.- IDM environments — set the
category.codeproperty onCogniteFilenodes to classify documents. Ifcategory.codeis not yet populated, Maintain falls back to metadata-based classification automatically. - Metadata-based environments — no action required. Metadata-based classification continues to work without changes.
- Future — once all environments are migrated to IDM, the metadata-based classification path will be removed.
Document naming and grouping
Documents can be grouped by their type. By default, documents have theUnknown type. Maintain supports the following types without additional configuration, but other types can be added on request:
Name for the document title and Title for the document description.
Risks
Risks are displayed in the asset inspector under the Risks tab. Maintain supports one risk type (Risk) in the Industry data model (IDM).
To remove the Risks tab from the asset inspector, use the inspectorConfiguration in Feature Configuration:
Layout
To add layouts, set"enableCustomLayouts" to true in Feature Configuration:
activeColorCoding attribute in the MaintainLayout view (data model Maintain).
APM_Config. Users without this access can only create personal layouts.Column order and column widths
Layouts can persist not only which columns are visible but also the column order (left-to-right arrangement) and column widths (horizontal size of each column). Both properties are optional and controlled by feature toggles. The following table shows how the toggle states affect layout behavior:Update the data model view
- MaintainLayout (system)
- Maintain_Layout (custom/legacy)
MaintainLayout view in the cdf_maintain space (v1), add the following properties to the view schema:columnsOrder— optional array of strings.columnWidths— optional array of objects withfieldName(string) andwidth(number).
Enable the feature toggles
Validate
- Open Maintain and select a layout.
- Reorder columns or resize them in the activity table.
- Save the layout and verify that the column order and widths persist when you reload or reselect the layout.
- Select a legacy layout (saved before enabling the toggles) and verify that it loads correctly with baseline column order and widths from the current field configuration.
MAINTAIN_layouts_columns_order and MAINTAIN_layouts_column_widths toggles. The app immediately stops saving column order and widths with layouts and falls back to runtime field configuration. No data migration or cleanup is needed, as Maintain ignores stored column order and widths when the toggles are off.
Plan Analysis
To add Plan Analysis, set"enablePlanAnalysis" to true in Feature Configuration:
personHours and numberOfMainResource values in the CogniteOperation view when ingesting data into your data model.Configure locations
Locations define the root assets and associated data spaces for your Maintain deployment. You can configure one or multiple locations within a single configuration, each with its own source data and application data spaces. When users sign in, they can select which location to work with and switch between locations as needed. To configure locations, go to Maintain > your.Config > Feature Configuration and add entries to the"rootLocationConfigurations" array. Each location requires the following properties:
- Single location
- Multiple locations
Export activities
Maintain provides several export options for activities. The following export formats are always available:enableInCsvImport set to true in the Field Configuration will be included in CSV and Excel exports.