Skip to content

docs: ISS-179977, Add documentation for mapping custom objects and custom links #254

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 23 commits into from
Jun 12, 2025
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
d33cd91
Update IDM docs
tilenkavcic May 28, 2025
720c6c6
Update supported object types
tilenkavcic May 28, 2025
c8cff51
Add fallback description
tilenkavcic May 28, 2025
2ed743a
Add documentation for mapping custom objects and custom links
ftopic Jun 9, 2025
393dbd6
Comments
ftopic Jun 9, 2025
a07cd0c
frontend user-identity method (#232)
shalomgk May 30, 2025
177c130
changed the position of note (#243)
AvinashSingh10-1 May 31, 2025
302beb9
chore: Update OpenAPI specs (#245)
bdbyrne Jun 2, 2025
e4bc470
Point to customization API docs from identity SDK docs (#246)
shivansh Jun 4, 2025
aeba548
chore: Include 'Bearer' in authorization header documentation (#247)
bdbyrne Jun 4, 2025
c6c9488
Document `unit` and `is_read_only` customization UI hints (#248)
shivansh Jun 5, 2025
0cb6bec
style rules for marketplace (#214)
bc-devrev Jun 5, 2025
431bd83
add instructions for local instance (#171)
bc-devrev Jun 5, 2025
08a5cd9
Update supported objects for Airdrop (#250)
arturo-aparicio Jun 5, 2025
347068d
Update ekline.yml (#249)
bc-devrev Jun 9, 2025
e48fd8d
Cross-domain session tracking link (#252)
shalomgk Jun 10, 2025
d55f2f5
Minor Airdrop fixes (#253)
patricijabrecko Jun 11, 2025
a8e18ec
docs: Add fallback docs (#241)
tilenkavcic Jun 11, 2025
ddfbb0c
Fix merge
tilenkavcic Jun 11, 2025
340e4c4
Merge branch 'main' into farist/custom_objects
tilenkavcic Jun 11, 2025
701f9e6
Readd custom object documentation
ftopic Jun 11, 2025
85c4748
remove metadata version mentions
ftopic Jun 11, 2025
0f69719
Update fern/docs/pages/airdrop/metadata-extraction.mdx
ftopic Jun 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions fern/docs/pages/airdrop/initial-domain-mapping.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,12 @@ Use the Chef UI to map record types and fields.
The UI displays the external record types you defined in external domain metadata and allows you to map them to DevRev objects.
Map one record type at a time, ensuring you map all required fields and as many optional fields as possible.

#### Mapping as custom object
The system allows importing record types and categories as custom objects. To achieve this you have to select `new_custom_object` when mapping the record type. For each external record type mapped as a custom object, a new custom **Leaf type** will be defined in DevRev and a **Subtype** will automatically be created. For more details on customization concepts, please refer to the
[Customization](../customization.mdx) and [Custom Objects](../custom-objects.mdx) documentation.

The field mapping works the same as for the stock DevRev types, with the difference being that there are significantly fewer fields to map. All the unmapped fields of the external record type will be created as custom fields.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [EkLine]

Where possible, do not structure sentences in future tense. Use present tense instead. (EK00005)

Suggested change
The field mapping works the same as for the stock DevRev types, with the difference being that there are significantly fewer fields to map. All the unmapped fields of the external record type will be created as custom fields.
All the unmapped fields of the external record type are created as custom fields.


### Specify fallback mappings

For some required DevRev fields a fallback is required.
Expand Down Expand Up @@ -151,6 +157,13 @@ This enables:
- Raw jq transformations using external fields as input (experimental)
- Example input data for testing transformations

<Warning>
The local metadata file is not validated against the snap-in submission.
</Warning>
This enables:
- Raw jq transformations using external fields as input (experimental)
- Example input data for testing transformations

<Warning>
The local metadata file is not validated against the snap-in submission.
</Warning>
Expand Down
59 changes: 58 additions & 1 deletion fern/docs/pages/airdrop/metadata-extraction.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,63 @@ be changed by the end user at any time, such as mandatory fields or custom field
- If a status field has no explicit transitions but you still want a stage diagram, set `all_transitions_allowed` to `true`, which creates a diagram where all the defined stages can transition to each other.
- External systems may categorize statuses (like Jira's status categories), which can be included in the diagram metadata (`states` in the example).
- The `starting_stage` defines the initial stage for new object instances. This data should always be provided if available, otherwise the starting stage is selected alphabetically.
- In current metadata format (v0.2.0), the order and human-readable name are taken from the enum values defined on the controlling field.
- The order and human-readable name are taken from the enum values defined on the controlling field.
- If the `states` field is not provided, default DevRev states are used: `open`, `in_progress`, and `closed`.

### Declare custom link types

External record types that represent links between other record types can be imported as ***custom links***, which means that each declared link type will be recreated in DevRev with the same names. This allows closer preservation of the original data without the need to map the links to DevRev's predefined link types.

To achieve this, the external record type needs to have an enum field defined that represents the link types and you need to declare a special field called `link_naming_data` in the record type.

```json
{
"fields": {
"type": {
"name": "Link Type",
"is_required": true,
"type": "enum",
"enum": {
"values": [
{
"key": "1",
"name": "Parent Of"
},
{
"key": "2",
"name": "Related"
},
{
"key": "3",
"name": "Blocks"
}
]
}
}
},
"link_naming_data": {
"link_type_field": "type",
"link_direction_names": {
"1": {
"forward_name": "Parent of",
"backward_name": "Child of"
},
"2": {
"forward_name": "Relates To",
"backward_name": "Relates To"
},
"3": {
"forward_name": "Blocks",
"backward_name": "Is Blocked By"
}
}
}
}
```

In the above example:
- The external *type* field is declared as the `link_type_field`.
- The `link_direction_names` provide a mapping of each value in the `link_type_field` to their directional names. `forward_name` and `backward_name` can be the same, but both are required.
- The human-readable name of the link type is taken from the enum values defined on the `link_type_field`. The linkable object types in DevRev are defined based on the mappings of the *source_id* and *target_id* [fields](./supported-object-types.mdx#custom_link#).

</Steps>
7 changes: 4 additions & 3 deletions fern/docs/pages/airdrop/supported-object-types.mdx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Supported DevRev object types for Airdrop

Last updated: _June 5, 2025_
Last updated: _June 11, 2025_

This document contains the list of all DevRev object types that are supported for Airdrop.

## Summary

| Object Type | Object Hierarchy | Loading | Extraction | Subtype | AppFragment | Comment |
|-------|-------------|:-------:|:----------:|:-------:|:----------:|-------------|
| [A new custom object type](#a-new-custom-object-type) | custom_object | ✔︎ | ✔︎ | ✔︎ | | |
| [new_custom_object](#new_custom_object) | custom_object | ✔︎ | ✔︎ | ✔︎ | | _New custom object is an example of how custom objects look in the context of Airdrop mapping._ |
| [account](#account) | account | ✔︎ | | | | |
| [airdrop_authorization_policy](#airdrop_authorization_policy) | airdrop_authorization_policy | ✔︎ | | | | _Airdrop authorization policy object type is the intermediate object type for creating MFZ object types: role, role_set, object_member, and access_control_entry._ |
| [airdrop_platform_group](#airdrop_platform_group) | airdrop_platform_group | ✔︎ | | | | _Airdrop platform group object type is the representation of the default DevRev groups._ |
Expand Down Expand Up @@ -51,7 +51,7 @@ This document contains the list of all DevRev object types that are supported fo
| Can Subtype | Indicates that the object type supports [subtype](https://developer.devrev.ai/beta/guides/object-customization#subtype) creation. |
| Can App Fragment | Indicates that the object type supports application fragments. |

## A new custom object type
## new_custom_object

**Resource Type:** `custom_object`

Expand Down Expand Up @@ -1650,3 +1650,4 @@ This document contains the list of all DevRev object types that are supported fo

[ ▲ top](#summary)

---
Loading