---
category: [Administration & Integrations, Administration & Integrations/Custom Integrations & Apps, Platform and Product Extensions, Platform and Product Extensions/Workday Extend, Platform and Product Extensions/Integration]
keyword: [Extend, Model Components, MCBO, Security domains, Business objects, Business processes, Attachment objects, Tasks, Reports]
nav: wcp_docs
parent_url: /wcp_docs/
title: >- 
  Reference: Model Component Attributes
layout: subsection
---

<a id="section_N10021_N1001E_N10001"></a>
Workday Extend enables you to use these attributes when configuring model components:

-   Common Attributes
-   Security Domains
-   Business Objects
-   Business Processes
-   Attachment Objects
-   Tasks
-   Reports
-   Fields and Field Types
-   Derived Fields


## <a id="section_mww_zqw_hsb"></a>Common Attributes

<table><thead><tr><th>Attribute</th><th>Usage</th></tr></thead><tbody><tr><td><code>id</code></td><td>Extend uses the <code>id</code> to provide identity to components defined in the app. The <code>id</code> doesn't display in Workday tenants. It maintains the identity of components when you update your app through subsequent deployments. <p>Use only numeric integers between 1 and 32767.</p></td></tr><tr><td><code>name</code></td><td>Used by aliases used in the tenant, such as Web Service Aliases and WQL Aliases. Extend uses the <code>name</code> when referencing app components within the same app. Example: The <code>name</code> of a security domain is a <code>defaultSecurityDomain</code> of a business object. <p>Enter a unique <code>name</code> for each model component type within an app. You can only use alphanumeric characters with upper camel case formatting.</p></td></tr><tr><td><code>label</code></td><td>You can configure an optional <code>label</code> that Workday displays in the tenant. <ul><li>If you specify a <code>label</code>, it must be unique for each model component type within an app.
</li><li>If you don't specify a <code>label</code>, Workday displays the <code>name</code> in the tenant.
</li></ul></td></tr><tr><td><code>description</code></td><td>You can configure an optional <code>description</code> that Workday displays in the tenant: <ul><li>In the <b>Business Object Details</b> report for fields and report data sources of business objects and attachment objects.
</li><li>In the <b>Workday Data Dictionary</b> report for fields of business objects and attachment objects.
</li></ul></td></tr></tbody></table><br/>

## <a id="section_rp1_xtk_vhb"></a>Security Domains

Include an `id`, a `name`, and an optional `label` when configuring a security domain.

You can reference security domains in business objects and fields within the same app. After you deploy your app to a tenant, you must create a security policy for each security domain.

<table><thead><tr><th>Attribute</th><th>Usage</th></tr></thead><tbody><tr><td><code>enabledForPageSecurity</code></td><td>When you set this value to <code>true</code>, you can secure the pages of your app with a security domain.</td></tr><tr><td><code>enabledForOrchestrationSecurity</code></td><td>When you set this value to <code>true</code>, you can secure the orchestrations of your app with a security domain.</td></tr></tbody></table><br/>

## <a id="section_ipj_ytk_vhb"></a>Business Objects

You can use business objects to define the data model for an app. Each business object contains many [fields](/wcp_docs/hod1558556125085.html#section-fields-and-field-types) and has these additional attributes:

<table><thead><tr><th>Attribute</th><th>Usage</th></tr></thead><tbody><tr><td><code>defaultSecurityDomains</code></td><td>A string array that contains the default security domains that control access to the business object. Each business object requires at least 1 default security domain. You can only use the names of security domains defined in the same app.</td></tr><tr><td><code>defaultCollection</code></td><td><p>Include an <code>id</code>, a <code>name</code>, a <code>label</code>, and optionally a <code>description</code> when configuring a <code>defaultCollection</code>.</p> <ul><li>Extend uses the <code>name</code> value as the name of the REST API resource to access all instances of the business object. Workday recommends that you use a pluralization of your object. Example: Charities.
</li><li>Extend uses the <code>label</code> value as the unfiltered report data source for the business object. Workday recommends that you prefix the business object with All and then pluralize it. Example: All Charities.
</li><li>Extend uses the <code>description</code> value as the <b>Description</b> of the report data source for the business object in the <b>Business Object Details</b> report.
</li></ul></td></tr><tr><td><code>enableIndex</code></td><td>Set this optional boolean attribute to <code>true</code> to index the field. You can index up to 5 regular fields for each Extend business object and attachment. You can only index fields that are secured by the default security domains of the business object or attachment. You can't index derived fields or <code>MULTI_INSTANCE</code> fields. Extend generates query parameters for all indexed fields in your app. <p><b>Note:</b> You don't need to apply the <code>enableIndex</code> attribute to <code>SINGLE_INSTANCE</code> fields of business objects. Extend indexes these fields automatically.</p></td></tr></tbody></table><br/>

## <a id="section_xst_drh_zhb"></a>Business Processes

Defining a business process enables Workday Extend developers to create new business process types and event business objects. These artifacts enable you to manage the state of the business objects you define in your apps.

<table><thead><tr><th>Attribute</th><th>Usage</th></tr></thead><tbody><tr><td><code>description</code></td><td>The description of the business process.</td></tr><tr><td><code>targetBusinessObject</code></td><td>Enter the name of a business object you defined for the app. Workday creates a 2-way reference between the event business object for the business process and the business object defined as the target. <p><b>Note:</b> The <code>targetBusinessObject</code> can't be a Workday-delivered business object.</p></td></tr><tr><td><code>securityDomains</code></td><td>An optional string array that overrides the default security domains defined at the business object level. You can only use the names of security domains defined in the same app.</td></tr><tr><td><code>details</code></td><td>A required attribute that references a specific <code>pageRoute</code> to a PMD defined in the presentation folder of the app. You can insert the <code>id</code> of the event record into the path of the <code>{eventId}</code>, enabling users to create a PMD file that calls relevant business process REST APIs and retrieves data from the target business object. <p>Workday renders this page whenever event details display in the tenant.</p></td></tr><tr><td><code>approvalStep</code></td><td>You can add an approval step to business process definitions that you create from the business process type. <p>Add allowed actions to the <code>approvalStep</code>. Example: <code>"actions": ["APPROVE", "DENY", "SEND_BACK"]</code>.</p> <p>You can define a dedicated <code>pageRoute</code> that references a PMD you created for the app. You can include the <code>{eventId}</code> in the path so the PMD can use it. When you don't define a <code>pageRoute</code>, we provide a basic approval experience to users in My Tasks with no contextual information.</p></td></tr><tr><td><code>actionSteps</code></td><td>You can add 1 or more action steps to business process definitions that you create from the business process type. <p>For each action step, define a dedicated <code>pageRoute</code> that references a PMD you created for that action step in the business process definition. Include the <code>{eventStepId}</code> in the path so the PMD can use it.</p></td></tr><tr><td><code>revisePageRoute</code></td><td>If <code>SEND_BACK</code> is an allowed action on an <code>approvalStep</code>, you must define a <code>pageRoute</code> for the Revise action. The <code>revisePageRoute</code> must reference a PMD you created for that action in the business process definition. Include the <code>{eventStepId}</code> in the path so the PMD can consume it.</td></tr><tr><td><code>allowsCancel</code></td><td>When you set this value to <code>true</code>, you can enable users to cancel the business process event.</td></tr><tr><td><code>allowsRescind</code></td><td><p>When you set this value to <code>true</code>, you can enable users to rescind the business process event.</p> <p>When you configure a new Extend business process as a subprocess, we automatically enable the <code>allowsRescind</code> attribute.</p></td></tr><tr><td><code>allowsManualSendBack</code></td><td>When you set this value to <code>true</code>, you can enable an administrator to manually send back the business process at any point in time, even when the business process isn't assigned to them. <p>To manually send back a business process, the administrator must be in a security group that has access to the <b>Manual Send Back</b> action in the <b>Who Can Do Actions on Entire Business Process</b> section of the business process security policy.</p></td></tr><tr><td><code>useForOrchestrate</code></td><td>When you set this value to <code>true</code>, you can: <ul><li>Use an Orchestration to initiate the business process.
</li><li>Edit the business process definition to add an <i>Orchestration Service</i> step.
</li></ul></td></tr></tbody></table><br/>

## <a id="section_qqx_fry_gmb"></a>Attachment Objects

You can use attachment objects to associate file data with a business object and to attach images to a business object.

<table><thead><tr><th>Attribute</th><th>Usage</th></tr></thead><tbody><tr><td><code>defaultSecurityDomains</code></td><td>A string array that contains the default security domains that control access to the attachment object. Each attachment object requires at least 1 default security domain. You can only use the names of security domains defined in the same app.</td></tr><tr><td><code>defaultCollection</code></td><td><p>Include an <code>id</code>, a <code>name</code>, a <code>label</code>, and optionally a <code>description</code> when configuring a <code>defaultCollection</code>.</p> <ul><li>Extend uses the <code>name</code> value as the name of the REST API resource to access all instances of the attachment object. Workday recommends that you use a pluralization of your object. Example: charityLogos.
</li><li>Extend uses the <code>label</code> value as the unfiltered report data source for the attachment object. Workday recommends that you prefix the attachment object with All and then pluralize it. Example: All Charity Logos.
</li><li>Extend uses the <code>description</code> value as the <b>Description</b> of the report data source for the attachment object in the <b>Business Object Details</b> report.
</li></ul></td></tr><tr><td><code>enableIndex</code></td><td>Set this optional boolean attribute to <code>true</code> to index the field. You can index up to 5 regular fields for each Extend business object and attachment. You can only index fields that are secured by the default security domains of the business object or attachment. You can't index derived fields or <code>MULTI_INSTANCE</code> fields. Extend generates query parameters for all indexed fields in your app. <p><b>Note:</b> You don't need to apply the <code>enableIndex</code> attribute to <code>SINGLE_INSTANCE</code> fields of attachments. Extend indexes these fields automatically.</p></td></tr><tr><td><code>isFilePurgeable</code></td><td>Set this optional boolean attribute to <code>true</code> to enable Extend to purge the file data and filename of the attachment object.</td></tr></tbody></table><br/>

## <a id="section_x4n_c2l_2rb"></a>Tasks

You can use these attributes when configuring tasks with or without business object context in Workday Extend:

<table><thead><tr><th>Attribute</th><th>Usage</th></tr></thead><tbody><tr><td><code>businessObject</code></td><td>Use when you want to author a task in the context of the business object. You can create a context-free task by removing the <code>"businessObject": "MyBusinessObject",</code> line from the template.</td></tr><tr><td><code>routePath</code></td><td>When you enter a <code>routePath</code>, you must use an existing <code>routingPattern</code> specified in the <code>tasks[]</code> array in the AMD file of your app.</td></tr><tr><td><code>securityDomains</code></td><td>An optional string array that overrides the default security domains defined at the business object level. You can only use the names of security domains defined in the same app.</td></tr><tr><td><code>secured</code></td><td>Set this optional boolean attribute to <code>true</code> to provide contextual security on the task in addition to the domain security policy set on the task. You'll only be able to view or run the task as a related action from the instances that you're contextually secured to access.</td></tr></tbody></table><br/>

## <a id="section_hpx_c2l_2rb"></a>Reports

You can use these attributes when configuring reports in Workday Extend:

<table><thead><tr><th>Attribute</th><th>Usage</th></tr></thead><tbody><tr><td><code>businessObject</code></td><td>The business object in your app that contains the report data source.</td></tr><tr><td><code>defaultSecurityDomains</code></td><td>A string array that contains the default security domains that control access to all columns within the report. Each report requires at least 1 default security domain. You can only use the names of security domains defined in the same app.</td></tr><tr><td><code>sortConfigs</code></td><td>You can use this optional string array to sort reports by specific fields and specify the sort order. For each field you want to sort by, specify these required attributes: <ul><li><code>id</code>
</li><li><code>order</code>
</li><li><code>field</code>
</li><li><code>direction</code>
</li></ul> Valid values for <code>direction</code> are <code>ASCENDING</code> and <code>DESCENDING</code>.</td></tr><tr><td><code>columns</code></td><td>Use this string array to specify each column you want to display in the report. When you configure a column, you must enter a field specified in the <code>businessObject</code> of the report definition. For each column, enter an <code>id</code>, a <code>name</code>, an <code>order</code>, and a <code>field</code>. <p>To add a column that returns an instance of the business object, enter <code>"isSelfReferencing": true</code> instead of the <code>field</code>.</p></td></tr></tbody></table><br/>

## <a id="section-fields-and-field-types"></a>Fields and Field Types

You can configure these attributes when you create fields for business objects and attachment objects. The name and label of a field must be unique within a business object or attachment object.

<table><thead><tr><th>Attribute</th><th>Usage</th></tr></thead><tbody><tr><td><code>securityDomains</code></td><td>An optional string array that overrides the default security domains defined at the business object level. You can only use the names of security domains defined in the same app.</td></tr><tr><td><code>isPurgeable</code></td><td>Set this optional boolean attribute to <code>true</code> to enable Extend to purge data stored in the field.</td></tr></tbody></table><br/>

Workday Extend enables you to configure these additional attributes for field types:

<table><thead><tr><th>Field Type</th><th>Additional Attributes</th></tr></thead><tbody><tr><td><code>TEXT</code></td><td><code>isReferenceId</code>: If <code>true</code>, Extend designates this field as the Reference ID of the business object. When you mark a field as the Reference ID, the field is required and you can't delete it. You can only configure this attribute once per business object, and you can't use these symbols in the field name: <ul><li>Backslash
</li><li>Double quotes
</li><li>Forward slash
</li><li>Plus sign
</li><li>Semicolon
</li></ul> <p>Workday recommends setting the attribute to <code>true</code> before you load data. If <code>isReferenceID</code> is <code>true</code>, the instance data of the field must be unique. If the instance isn't unique and you attempt to add the attribute to the data model, the deployment will fail.</p> <p><code>enableSearch</code>: If <code>true</code>, you can select values of this field from a prompt when you filter by instances in a custom report. You can use the filter to prompt the user to select an instance of the target Extend business object, or you can select an instance of the target Extend business object from the <b>Comparison Value</b> prompt.</p> <p>You can enable a maximum of 3 <code>TEXT</code> fields per app for search in prompts.</p> <p>If <code>enableSearch</code> is <code>true</code>, <code>enableIndex</code> must also be <code>true</code> for the field.</p> <p>Workday recommends setting the <code>enableSearch</code> attribute to <code>true</code> before you load data. If <code>enableSearch</code> is <code>true</code>, the instance data of the field must be unique. If the instance isn't unique and you attempt to add the attribute to the data model, the deployment will fail.</p> <p>Set <code>enableSearch</code> to <code>true</code> if you want to use the business object in a Discovery Board filter.</p> <p><code>useForDisplay</code>: If <code>true</code>, Extend uses the contents of this field to set the display value of the business object or attachment. You can only configure this attribute once per business object or attachment. You can't set this attribute on a <code>MULTI_INSTANCE</code> field.</p><p><b>Note:</b> By default, the <code>descriptor</code> of an attachment object is the <code>fileName</code> of the object. When you set <code>"useForDisplay": true</code> on a field of an attachment object, the display name and the <code>descriptor</code> of the attachment object become the contents of this field. As a best practice, don't use the <code>descriptor</code> as the file name within the <code>fileUploader</code> or <code>attachmentList</code> widgets. When you specify the attachment name, update any PMD that uses the <code>attachmentList</code> tag to use the <code>fileName</code> of an attachment object. Example: <code>"attachmentName": "<% getData.image.fileName %>"</code></p></td></tr><tr><td><code>RICH_TEXT</code></td><td><p>This field type doesn’t support these attributes:</p><ul><li><code>enableIndex</code>
</li><li><code>enableSearch</code>
</li><li><code>isReferenceID</code>
</li><li><code>useForDisplay</code>
</li></ul> <p>Use this field type to create fields in business objects and attachment objects that store rich text formatting. Users can then configure text that renders with appropriate formatting, such as bold text, on Extend pages.</p> <p>Example: In the <b>Create Charity</b> task, a user enters a description using the rich text widget formatting tool to create the markup text such as:</p><ul><li>Bold.
</li><li>Italics.
</li><li>Ordered and numbered lists.
</li></ul> <p>When the user accesses the <b>All Charities</b> report, the description includes the formatted text.</p> <p>Workday recommends using <b>Rich Text</b> field type with the rich text widget on PMD pages to ensure the desired format when writing and viewing data. For PMD page limitations, see <a href="/wcp_docs/aao1512514194210.html">richText</a>.</p> <p>On Extend pages, use a rich text widget or a formatting tool to create the markup text.</p> <p><b>Note:</b> This functionality only applies to new fields you create in your Extend app. You can’t change the field type for existing business objects and attachment objects in promoted apps (IMPL/SBOX/PROD).</p></td></tr><tr><td><code>DATE</code></td><td><code>precision</code>: You can configure this attribute to set the precision of the date. You can use these values: <ul><li><code>MILLISECOND</code>
</li><li><code>SECOND</code>
</li><li><code>MINUTE</code>
</li><li><code>HOUR</code>
</li><li><code>DAY</code>
</li><li><code>MONTH</code>
</li><li><code>YEAR</code>
</li></ul></td></tr><tr><td><code>DECIMAL</code></td><td><code>decimals</code>: You can configure this attribute to define up to 10 decimal places.</td></tr><tr><td><code>INTEGER</code></td><td>None.</td></tr><tr><td><code>CURRENCY</code></td><td>None.</td></tr><tr><td><code>BOOLEAN</code></td><td>None.</td></tr><tr><td><code>SINGLE_INSTANCE</code></td><td><code>target</code>: A string containing the name of another business object defined in the same app or the name of a Workday-delivered business object. <p><code>secureByTarget</code>: When <code>true</code>, Workday delegates contextual security to the instance of the target business object in addition to the security it applies to the Extend business object.</p> <p><code>useForDisplay</code>: If <code>true</code>, Extend uses the contents of this field to set the display value of the business object or attachment. You can only configure this attribute once per business object or attachment.</p><p><b>Note:</b> By default, the <code>descriptor</code> of an attachment object is the <code>fileName</code> of the object. When you set <code>"useForDisplay": true</code> on a field of an attachment object, the display name and the <code>descriptor</code> of the attachment object become the contents of this field. As a best practice, don't use the <code>descriptor</code> as the file name within the <code>fileUploader</code> or <code>attachmentList</code> widgets. When you specify the attachment name, update any PMD that uses the <code>attachmentList</code> tag to use the <code>fileName</code> of an attachment object. Example: <code>"attachmentName": "<% getData.image.fileName %>"</code></p></td></tr><tr><td><code>MULTI_INSTANCE</code></td><td><code>target</code>: A string containing the name of another business object defined in the same app or the name of a Workday-delivered business object. <p>You can't set the <code>secureByTarget</code> or <code>useForDisplay</code> attributes on a <code>MULTI_INSTANCE</code> field.</p> <p>You can't convert <code>SINGLE_INSTANCE</code> fields to <code>MULTI_INSTANCE</code> fields.</p> <p>Workday recommends that you keep the count of instances per <code>MULTI_INSTANCE</code> field below 1,000. Larger numbers of instances per <code>MULTI_INSTANCE</code> field might affect performance.</p></td></tr></tbody></table><br/>

<b>Note:</b> When you add or update a `CURRENCY` field in a business object, you must include the `currency` and `value` attributes in the API request body. Example:

```
{
"name": "DogsMatter",
"description": "Charity for Dogs",
"minDonationAmount":
{
  "currency": "USD",
  "value": "50"
},
"maxDonationAmount":
{
  "currency": "USD",
  "value": "1000"
}
}
```

## <a id="section_pdk_5wl_lsb"></a>Derived Fields

You can configure the same attributes on derived fields as you can on standard fields. However, Extend doesn't support the `CURRENCY` or `SINGLE_INSTANCE` field types for derived fields.

### Related Information

[Administrator Guide: Concept: Workday REST API Date, Time, and Time Zone Handling](https://doc.workday.com/access/sources/dita/topic?wd:docset=adminguide&ft:locale=en-US&resourceid=jas1392746623599)

[Tutorial: Getting Started with Model Components](https://wd5.myworkday.com/workday/learning/course/84f2dcc34eff01f6facdbc20612cd98b?type=9882927d138b100019b928e75843018d)

[Administrator Guide: Steps: Set Up Currencies](https://doc.workday.com/access/sources/dita/topic?wd:docset=adminguide&ft:locale=en-US&resourceid=dan1370796985702)

[Reference: Derived Fields](/wcp_docs/syr1643821053546.html)

