Skip to main content
The features described in this section are in public preview and may change.

Before you start

Make sure you have the following:

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.
Create new yourRootLocation_source_data and yourRootLocation_app_data spaces for each root location you have if you want to implement access control per location.
You can create spaces in the following ways:
You can create the spaces using Cognite Python SDK. Use the following Python code and replace 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

If you already have an admin group with the same capabilities, you can reuse that group and skip this step.
Create a group of users who can configure the Maintain application across all locations. See also how to configure locations.
1

Navigate to Manage access

Go to CDF > Manage > Manage access.
2

Create a group

Create a group and name it, for example, industrial_tools_admin.
3

Assign capabilities

Assign 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: Assign the following group capabilities:

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

Complete most of the data entities to use the application effectively. Ingest the data entities in the order they appear in the table. Once you ingest Assets and Maintenance orders, open the application to check that this data appears correctly.
Use the existing 3D APIs to ingest 3D data even though it’s stored in data models. Learn more about uploading 3D models and linking assets to 3D objects.
You can also use the Cognite Toolkit to populate data models. Learn more about using the Cognite Toolkit with Maintain.

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.
Maintain stores plan, layout, and canvas instances in your 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.
Important for IDM/CDM deployments: Your appDataInstanceSpace must include the APM_AppData data model (or equivalent system data model) containing views such as APM_Plan, APM_User, Maintain_Layout, APM_Canvas, APM_Comment, APM_Marker, and Maintain_FileGridZoneAnnotation. These views are required regardless of whether Maintain runs in APM or IDM/CDM mode. The deployment mode only affects source data configuration (activities, operations, assets), not the app data space structure.

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.
1

Sign in to Maintain

Sign in to Maintain with your organization ID.
2

Select spaces

Select the spaces for the source data (yourRootLocation_source_data) and for the application data (yourRootLocation_app_data).
A basic configuration named Default is set up. The configuration uses JSON and allows flexibility in how you view Maintain. You can see examples of Field Configuration and Feature Configuration.

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 as CogniteAsset 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.
If you’re using the Cognite Toolkit to create custom views for activities or operations, follow the standard view structure with Container, View, and Node YAML files. See the Cognite Toolkit documentation for examples and templates.
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:
1

Sign in to Maintain

Sign in to Maintain with your organization ID.
2

Open configuration

Under Cognite Maintain, select the dropdown > yourConfig > (edit).
3

View mappings

In Feature Configuration, you’ll see your view mappings.
4

Configure spaces

For each property, keep the default space or select the space where you created custom views.
5

Save changes

Select Apply to save the changes.

Field configuration

The Maintain Field and Feature configurations are currently based on RAW JSON. Copy the configuration into a text editor, edit it, and then paste it back into the configuration modal.
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:
In the example, Maintain displays two fields in the Activity table, with the “title“ field renamed to “Activity title“ and “status“ renamed to “Status“. Ensure the title appears before the status. You can further configure individual fields by adding entries to Field Configuration. The following table lists the basic configuration properties:

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.
This example shows how to configure the URL link for the 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 the materialStatus field:
If the field value is "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:
The Maintain Field and Feature configurations are currently based on RAW JSON. Copy the configuration into a text editor, edit it, and then paste it back into the configuration modal.
The configuration is a JSON object where each key is a field name from the operation view and the value is a configuration object. This example configures three fields to display in Maintain (Operation name, Type, and Discipline):
The following table lists the available configuration properties:

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: Generic fields include any other operation property, such as 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 orderInOperationRow defined 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.
There is no hard limit on the number of fields you can configure. All fields with 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 an alias, 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:
1

Update the data model view

If your environment uses the CDF_AppLocationConfig view, no changes are needed. The operationFieldConfiguration field is already included.
2

Enable the feature toggle

Enable the MAINTAIN_operation_field_config toggle for the target environment and project.
3

Configure fields

  1. Open the app config modal in Maintain.
  2. In the Field operation configuration textarea, enter the JSON configuration. For example:
  3. Select Apply.
4

Validate

  1. Verify that operation rows display fields in the configured order with aliases in tooltips.
  2. Reopen the config modal and confirm that the configuration persists.

Disable operation field configuration

To disable operation field configuration, turn off the MAINTAIN_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 the displayNameRegex 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”:
The format of the regular expression must follow the JS standard.

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 the availableLanguages property in Feature Configuration. This example shows how to set the English and German languages:
To get a full list of available languages, contact Cognite customer support.

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:

Time and date configuration

To configure how dates are formatted globally in Maintain, set the following keys under timezoneConfiguration 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:
Learn how to upload 3D models and link assets to 3D objects for improved asset discoverability and navigation in Maintain.
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: This example shows how to configure a project that has two locations, Site A and Site B:
You can find the modelId and revisionId in CDF by navigating to your 3D model. Use the 3D APIs to retrieve model and revision IDs programmatically.
If all criteria are met, the activity appears on top of the asset annotation in the 3D lens when the document is open.

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 the gridReference 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.
1

Add grid zones in Feature Configuration

Set "enableGridZones" to true in Feature Configuration:
2

Create a grid zones file

Create a JSON file containing the zone definitions. Each zone requires a zone identifier and 3D bounding box coordinates with min and max points (x, y, z):
Coordinates are absolute positions in the 3D model’s coordinate system. Optional properties floc (functional location) and platform can also be included.
3

Upload the file to CDF

Upload the JSON file to CDF Files and note its external ID. Create one file per location.
4

Link the file to your location

In the Root Location Configuration, add the 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.
1

Add grid zones in Feature Configuration

Set "enabled" to true in Feature Configuration:
2

Populate the grid zones data model

Add zone annotation data to the MaintainFileGridZoneAnnotations view in your app data space. Each zone annotation links a zone to a specific area in a document:
If you’re using the Cognite Toolkit, create nodes in the Maintain_FileGridZoneAnnotation view. See examples in your toolkit data under build/data_modeling/ directory.
Coordinates are normalized values between 0 and 1, representing the position relative to the document dimensions. For example, 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:
By default, all supported documents ingested into the CDF project can be opened in Maintain. However, additional configuration is required to fully use the 2D features.
Learn how to parse and extract data from P&ID diagrams to automatically link assets to diagram elements.

Supported document types

Maintain supports the application/pdf MIME type (Multimedia Internet Mail Extensions) documents. Other document types won’t appear in the search in Maintain.
All files must have an external ID. Files without an external ID can’t be opened.
Document type resolution
Maintain resolves the document type differently depending on whether your environment uses the Industry Data Model (IDM) or metadata-based configuration.
Maintain reads the document type from the 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.code property on CogniteFile nodes to classify documents. If category.code is 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 the Unknown type. Maintain supports the following types without additional configuration, but other types can be added on request:
The document type is used for logical grouping only and doesn’t affect how Maintain interacts with documents.
In CDF, the metadata fields for documents in Maintain are 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:
This also requires the presence of the activeColorCoding attribute in the MaintainLayout view (data model Maintain).
To create global layouts visible to all users, you need write access to 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:
Existing layouts saved before enabling these toggles continue to work. When you select a layout that doesn’t have column order or width data, Maintain automatically creates a baseline from the current field configuration. No data migration is required.
Enable column order and column widths To enable column order and width persistence for layouts, complete the following steps:
1

Update the data model view

The layout view must include the new properties. Depending on your environment:
If your environment uses the 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 with fieldName (string) and width (number).
Deploy the view/schema change before or with the app version that writes these fields.
If these properties are not present in the view definition, upserts may strip the values or fail. Deploy schema changes before enabling the feature toggles.
2

Enable the feature toggles

Enable the following toggles for the target environment:You can enable the toggles independently or together.
3

Validate

  1. Open Maintain and select a layout.
  2. Reorder columns or resize them in the activity table.
  3. Save the layout and verify that the column order and widths persist when you reload or reselect the layout.
  4. 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.
Disable column order and column widths To disable column order and width persistence, turn off the 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:
When added, the Plan Analysis panel appears at the bottom of the screen for created plans. This panel provides insights into your maintenance plans, including budget calculations and hourly utilization.
Plan Analysis requires 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:
This example shows how to configure a single location:

Export activities

Maintain provides several export options for activities. The following export formats are always available:
Only fields with enableInCsvImport set to true in the Field Configuration will be included in CSV and Excel exports.
Last modified on June 22, 2026