---
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 in IntelliJ
layout: subsection
---

### Context

<a id="context_it5_x1v_v4b"></a>
You can use the Workday Extend Plugin for IntelliJ to author business objects in JSON. Business objects:

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


<b>Note:</b> Once created, you can't change the `id` of a business object.

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.

### Steps

1.  <a id="add_business_object"></a>Right-click the `model` folder of your app, and select <b>New</b> &gt; <b>Model Component</b> &gt; <b>Business Object</b>.

    <b>Note:</b> Don't end business object names with a numeral.

2.  <a id="step_N1009A_N1002E_N1001E_N10001"></a>Author 1 or more business objects for your app. Example:

    ```
    {
      "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`.



### Next Steps

<a id="postreq_N1007D_N1003A_N10001"></a>
Add 1 or more attachment objects to your app.

### Related Information

[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)

