---
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, Extend Business Objects, MCBO, Model Component Business Objects, Business Objects, Model BO]
nav: wcp_docs
parent_url: /wcp_docs/
title: Add Business Objects
layout: subsection
---

### Prerequisites

<a id="prereq_wxz_yws_pwb"></a>
[Create Extend Apps Using App Builder](/wcp_docs/xer1651695264256.html)

### Context

<a id="context_it5_x1v_v4b"></a>
Business objects:

-   Extend Workday’s single object model to create new objects.
-   Persist and store app data.


Once created, you can't change the `id` of a business object. Don't end business object names with a numeral.

You can use business objects to create sophisticated data models by relating objects to each other and to Workday-delivered objects.

When you create business objects, Extend automatically provides report data sources and REST API endpoints.

<b>Note:</b> Use model business objects when you need to create stand-alone business objects to address the unique requirements of your business. If you want to create custom fields on existing Workday-delivered business objects, use [custom objects](/wcp_docs/fdy1529428780920.html).

### Steps

1.  <a id="step_N10085_N10082_N10052_N10001"></a>In App Builder, add a <b>Business Object</b> component.
2.  <a id="step_N1009A_N1002E_N1001E_N10001"></a>Author 1 or more business objects for your app. Example using Code mode:

    ```
    {
      "id": 1,
      "name": "Charity",
      "label": "Charity",
      "defaultSecurityDomains": [
        "ManageCharities"
      ],
      "defaultCollection": {
        "name": "charities",
        "label": "All Charities"
      },
      "fields": [
        {
          "id": 1,
          "name": "name",
          "type": "TEXT",
          "label": "Name",
          "useForDisplay": true,
          "isReferenceId": true
        },
        {
          "id": 2,
          "name": "description",
          "type": "TEXT",
          "label": "Description"
          
        },
        {
          "id": 3,
          "name": "matchDonations",
          "type": "BOOLEAN",
          "label": "Match Donations"
        },
        {
          "id": 4,
          "name": "relationshipManager",
          "type": "SINGLE_INSTANCE",
          "label": "Relationship Manager",
          "target": "WORKER"
        },
        {
          "id": 5,
          "name": "logo",
          "type": "SINGLE_INSTANCE",
          "label": "Logo",
          "target": "CharityLogo"
        },
        {
          "id": 6,
          "name": "createdBy",
          "label": "Created By",
          "type": "SINGLE_INSTANCE",
          "target": "WORKER",
          "secureByTarget": true
        },
        {
          "id": 7,
          "name": "costCenter",
          "label": "Cost Center",
          "type": "SINGLE_INSTANCE",
          "target": "COST_CENTER",
          "secureByTarget": true
        },
        {
          "id": 8,
          "name": "company",
          "label": "Company",
          "type": "SINGLE_INSTANCE",
          "target": "COMPANY",
          "secureByTarget": true
        }
      ],
      "derivedFields": [
        {
          "id": 1,
          "name": "logoUploadedBefore2022",
          "type": "BOOLEAN",
          "label": "Logo Before 2022",
          "expression": "logo.uploadedDate.toYear().toNumber() < 2022"
        },
        {
          "id": 2,
          "name": "logoLabel",
          "type": "TEXT",
          "label": "Logo Label",
          "expression": "logoUploadedBefore2022 ? 'Old Image' : 'New Image'"
        },
        {
          "id": 3,
          "name": "workdayMatched",
          "type": "BOOLEAN",
          "label": "Workday Matched Charity",
          "expression": "matchDonations && (description == 'Workday Charity')"
        }
      ]
    }
    ```

    You can set `"secureByTarget": true` on multiple `SINGLE_INSTANCE` fields of a business object. Doing so enables you to define business processes that require routing to or approval by multiple recipients. When you set the `secureByTarget` attribute on multiple fields, the security evaluation is based on the aggregation of the multiple security contexts. For more information, see [Security Evaluation with Multiple Targets](/wcp_docs/nvi1682534801207.html).

    <b>Note:</b> Because the first field is marked as the Reference ID, the Reference ID Type (as found through the Integration IDs) is the name of the business object with `ID` appended to it. Example: `Charity_ID`.



### Related Information

[Tutorial: Generate Components from Business Objects](https://wd5.myworkday.com/workday/learning/course/5fe6ace23e7e10016bb2cf3d24f80001?type=9882927d138b100019b928e75843018d)

[App Catalog: Charitable Donations](/app-catalog/charitableDonations)

[Reference: Business Object API Requests](/wcp_docs/xml1559763881756.html)

[Reference: Model Component Attributes](/wcp_docs/hod1558556125085.html)

[Reference: Targets for Referencing Workday Business Objects](/wcp_docs/qwm1559767719386.html)

[Reference: Workday-Delivered vs. Workday Extend Business Objects](/wcp_docs/rze1614126465976.html)

