> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.itential.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.itential.com/_mcp/server.

# Manage Lifecycle Manager resources

**Add-on product**: Lifecycle Manager extends Itential Platform with stateful orchestration capabilities. It requires Itential Platform as a prerequisite. [View platform overview](/itential-platform/overview)

Create and manage resources that represent infrastructure entities in your environment.

## What are resources?

Resources in Lifecycle Manager represent any infrastructure entity that Itential Platform can manage: network devices, cloud instances, code repositories, or services.

From the Resources view, you can:

* Define resource models using JSON Schema
* Create instances of resources
* Build and execute actions against instances
* Edit resource metadata

## Before you begin

Before creating resources, review:

* [Lifecycle Manager overview](/itential-platform/lifecycle-manager/overview) for foundational concepts
* [JSON Schema documentation](https://json-schema.org/) for model syntax
* [Workflow documentation](/itential-platform/studio/workflows/overview) for action design

## Create a resource

To create a new resource:

#### Open the create dialog

Click **Create Resource +** on the Lifecycle Manager home page

#### Enter resource details

Provide a name and optional description

#### Save the resource

Click **Create** to open the resource in a new view

## Open an existing resource

To open a resource:

#### Expand the resources menu

Click **Resources** in the side navigation menu

#### Select a resource

Click the resource name from the expanded list

**Tip**: Use the search bar at the top of the accordion menu to filter resources by name. Alternatively, click the **Search** icon in the toolbar to use the Collections view.

## Understand resource tabs

The Resource view organizes functions across four tabs:

| Tab             | Purpose                                                        |
| --------------- | -------------------------------------------------------------- |
| Model           | Define the resource model in JSON Schema format (default view) |
| Actions         | Create workflows that manage instance properties               |
| Instances       | Create instances and execute actions                           |
| Instance Groups | Organize instances and execute bulk actions                    |

Click tab names at the top of the view to navigate between them.

## Define resource models

Resource models specify which properties instances can have. Define models using JSON Schema on the Model tab.

### Model tab elements

| Element                 | Purpose                                              |
| ----------------------- | ---------------------------------------------------- |
| Menu button (top right) | Edit metadata, export JSON, or delete resource       |
| Save button             | Save model changes                                   |
| JSON Schema editor      | Edit the model with search, copy, and theme controls |

### Model syntax

New resources include this template:

```json
{
    "$id": "resource-name",
    "description": "Schema defining the possible values within instances",
    "type": "object",
    "required": [],
    "additionalProperties": true,
    "properties": {}
}
```

| Keyword                | Description                              |
| ---------------------- | ---------------------------------------- |
| `$id`                  | Resource model name                      |
| `description`          | Model description                        |
| `type`                 | Data type (always `object`)              |
| `required`             | Array of required property names         |
| `additionalProperties` | Whether undefined properties are allowed |
| `properties`           | Object defining manageable properties    |

Add properties as keys in the `properties` object. Add required properties to the `required` array.

### Example: Define a switch model

To create a resource model for network switches:

#### Identify required properties

Decide which properties instances should have:

* `hostname` (required string)
* `ipv4` (required IPv4 address string)
* `vendor` (optional string)

#### Add properties to the model

```json
    "properties": {
        "hostname": {
            "type": "string"
        },
        "ipv4": {
            "type": "string",
            "format": "ipv4"
        },
        "vendor": {
            "type": "string"
        }
    }
```

#### Specify required properties

```json
    "required": ["hostname", "ipv4"]
```

#### Save the model

Click **Save** to apply changes

Complete model:

```json
{
    "$id": "org-switch",
    "description": "Schema defining switch properties",
    "type": "object",
    "required": ["hostname", "ipv4"],
    "additionalProperties": true,
    "properties": {
        "hostname": {
            "type": "string"
        },
        "ipv4": {
            "type": "string",
            "format": "ipv4"
        },
        "vendor": {
            "type": "string"
        }
    }
}
```

## Create instances

Instances represent individual occurrences of a resource. For example, each switch in your network would be a separate instance.

### Instances tab elements

| Element             | Purpose                                            |
| ------------------- | -------------------------------------------------- |
| Menu button         | Edit metadata, export, or delete resource          |
| Toolbar             | Create, import, export instances, or create groups |
| Filter bar          | Filter the instance table                          |
| Instance table      | View all instances                                 |
| Instance side panel | Run actions, view properties, or check history     |

### Example: Create a switch instance

To create an instance:

#### Open the instance dialog

Click **+ New Instance** on the Instances tab

#### Configure the instance

* Enter a name and description (optional)
* Select a create action (use default **Create** if unsure)
* Enter property values (required fields are marked)

#### Save the instance

Click **Save** to add the instance to the table

## Import and export instances

### Import instances

To import instances from JSON files:

#### Open the import dialog

Click the **Import** icon on the Instances tab

#### Select files

Browse and select one or more JSON files

#### Import instances

Click **Import** to validate and add instances

Import requirements:

* Instance data must conform to the resource model schema
* Instance names must be unique within the resource

Successfully imported instances show "Import" in the **Last Action** column and History tab.

### Export instances

**Export multiple instances**:

#### Select instances

Check rows in the instance table

#### Export selection

Click the **Export** icon in the toolbar

Downloaded file name: `{resource-name}_exportedInstances.json`

**Export single instance**:

Choose one method:

* Click the vertical dot menu in the instance table row
* Click **Export** in the instance properties side panel
* Click **Export** on the Edit Instance Details page

Downloaded file name: `{instance-name}.json`

Exported files exclude the `_id`, `modelId`, and `actionHistory` fields.

## Create actions

Actions use workflows to manage instance properties. For example, an action could update a virtual machine's power state and record the change.

### Actions tab elements

| Element      | Purpose                                   |
| ------------ | ----------------------------------------- |
| Menu button  | Edit metadata, export, or delete resource |
| Toolbar      | Create, select all, or delete actions     |
| Filter bar   | Filter displayed actions                  |
| Action cards | View, edit, or delete actions             |

### Action types

| Type   | Description                                                                             |
| ------ | --------------------------------------------------------------------------------------- |
| Create | Create new instances. Workflows are optional but useful for dynamic property assignment |
| Update | Modify instance properties. Requires a workflow to implement changes                    |
| Delete | Remove instances. Workflows are optional but useful for cleanup tasks                   |

### How actions work

Actions follow this workflow pattern:

**Update and delete actions**:

#### Receive instance data

Lifecycle Manager sends current properties in the `instance` job variable

#### Process in workflow

Workflow tasks read `instance`, make changes, and output to `instance`

#### Apply changes

Lifecycle Manager updates the instance with returned values

**Create actions**:

Create actions don't receive `instance` as input (the instance doesn't exist yet). If a workflow is attached, it must create and output the `instance` variable according to the resource model.

**Transformations**:

* **Pre-transformation**: Receives `instance` and user inputs, outputs job variables to workflow
* **Post-transformation**: Receives `workflowOutputs` and original `instance`, outputs updated `instance`

When no workflow is attached, users edit instance properties directly. This is the only case where direct editing is allowed.

### Example: Update switch IP address

To create an update action:

#### Create the action

* Click **+ New Action**
* Enter a name (for example, "change\_ipv4")
* Select **Update** from Action Type
* Click **Save**

#### Add a workflow

* Click **+ Workflow**
* Select **+ Create New** to open Studio

#### Design the workflow

* Add tasks that receive the `instance` job variable
* Update the `ipv4` property
* Output changes to the `instance` job variable
* Save the workflow

#### Run the action

* Navigate to the Instances tab
* Select an instance
* Click **Run ►** for the new action in the Actions panel
* Verify completion and check the Properties tab

## Organize instances with groups

Instance groups let you execute actions against multiple instances simultaneously.

### Instance Groups tab elements

| Element                   | Purpose                                     |
| ------------------------- | ------------------------------------------- |
| Menu button               | Edit metadata, export, or delete resource   |
| Toolbar                   | Create or delete groups                     |
| Filter bar                | Filter the group table                      |
| Instance group table      | View all groups                             |
| Instance group side panel | Run actions, view members, or check history |

### Group types

| Type    | Description                                                                                               |
| ------- | --------------------------------------------------------------------------------------------------------- |
| Manual  | Instances are manually assigned. Membership is static                                                     |
| Dynamic | Instances are automatically assigned based on filters. Membership updates when instance properties change |

### Example: Create and use a group

To create a dynamic group:

#### Open the group dialog

Click **+ New Instance Group** on the Instance Groups tab

#### Configure the group

* Enter a name and description
* Check **Dynamic Group**
* Set filters (for example, name starts with "ec" for East Coast)
* Click **Apply Filter**

#### Save the group

Click **Save** to create the group

To run an action against a group:

#### Open the group

Select the group from the instance group table

#### Select an action

Navigate to the Actions tab in the side panel

#### Run the action

* Click **Run ►** for the desired action
* Enter required properties in the JSON editor
* Click **Run ►** to execute

## Edit resource metadata

To modify resource metadata:

#### Open the metadata panel

Click the **Menu** button (top right), then select **Metadata**

#### Update fields

Edit name, description, or other metadata

#### Save changes

Click **Save**

## Next steps

#### [View instance history](/itential-platform/lifecycle-manager/view-instance-history)

Track how instance data changes over time with execution history