> For the complete documentation index, see [llms.txt](https://docs.cipp.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cipp.app/user-documentation/cipp/custom-data/schema-extensions.md).

# Schema Extensions

[Schema extensions](https://learn.microsoft.com/en-us/graph/extensibility-overview?tabs=http#schema-extensions) allow you to add custom properties to Microsoft Entra directory objects. Unlike directory extensions, a schema extension groups several related properties under one named schema, which is useful when you want a coherent set of attributes rather than scattered individual ones.

* Schema extensions can only be Deprecated once they are set to Available.
* Properties cannot be deleted once they are created.
* There is a limit of 100 extension values per resource instance (directory objects only).
* There is a limit of 5 total schema extensions.

## Action Buttons

{% content-ref url="/pages/waCkkUlefF2MlMWMa154" %}
[Add Schema Extension](/user-documentation/cipp/custom-data/schema-extensions/add.md)
{% endcontent-ref %}

## Table Details

| Column       | Description                                                                                                                          |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| ID           | The full schema identifier, including the prefix Microsoft Graph generates when the schema is first created.                         |
| Status       | The lifecycle state of the schema: In Development, Available, or Deprecated. The status can only move forward through that sequence. |
| Description  | The description recorded for the schema.                                                                                             |
| Target Types | The directory object types the schema can be applied to.                                                                             |
| Properties   | The properties defined on the schema, each with its name and data type.                                                              |

## Table Actions

<table><thead><tr><th>Action</th><th>Description</th><th data-type="checkbox">Bulk Action Available</th></tr></thead><tbody><tr><td>Add Property</td><td>Opens a dialog to add a property name and data type to the schema. Available for schemas that are not Deprecated. Properties cannot be removed once added.</td><td>false</td></tr><tr><td>Set to Available</td><td>Promotes the schema so it can be used in production. Available for schemas that are In Development. Once Available, the schema and its properties can no longer be deleted.</td><td>true</td></tr><tr><td>Set to Deprecated</td><td>Retires the schema so it can no longer be used for new values. Available for schemas that are Available. This is permanent and cannot be undone.</td><td>true</td></tr><tr><td>Delete Schema</td><td>Removes the schema from Microsoft Graph and from CIPP after confirmation. Only available while the schema is In Development.</td><td>true</td></tr></tbody></table>

{% hint style="warning" %}
Plan your properties while the schema is still In Development. That is the only point at which the schema can be deleted and started again. After you set it to Available, both the schema and every property on it are permanent.
{% endhint %}

{% hint style="info" %}
CIPP maintains its own schema, `cippUser`, which stores JIT administrator state, mailbox type, archive settings, and per-user MFA state on the user object. It counts towards the limit of five schema extensions and should be left in place.
{% endhint %}

***

## Feature Requests / Ideas

We value your feedback and ideas. Please raise any [feature requests](https://github.com/CyberDrain/CIPP/issues/new?template=feature.yml) on GitHub.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.cipp.app/user-documentation/cipp/custom-data/schema-extensions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
