---
category: [Administration & Integrations, Platform and Product Extensions, Platform and Product Extensions/Integration, Administration & Integrations/Custom Integrations & Apps, Platform and Product Extensions/Workday Extend]
keyword: [Extend, Limits]
nav: wcp_docs
parent_url: /wcp_docs/
title: >- 
  Reference: Limits on Extend App Components
layout: subsection
---

## <a id="limitsonapps"></a>Limits on Apps

<table><thead><tr><th>Model Component</th><th>Limit</th></tr></thead><tbody><tr><td>Number of business objects.</td><td>20 per app.</td></tr><tr><td>Number of security domains.</td><td>10 per app.</td></tr><tr><td>Number of business processes.</td><td>5 per app.</td></tr><tr><td>Number of attachments.</td><td>5 per app.</td></tr><tr><td>Number of tasks.</td><td>20 per app.</td></tr><tr><td>Number of reports.</td><td>10 per app.</td></tr><tr><td>Number of <code>TEXT</code> fields that are enabled for search in prompts.</td><td>3 per app.</td></tr><tr><td>Number of <code>SINGLE_INSTANCE</code> and <code>MULTI_INSTANCE</code> fields where the target is a Workday-delivered business object.</td><td>25 per app.</td></tr><tr><td>Number of <code>SINGLE_INSTANCE</code> fields where <code>enableReportingFromTarget</code> is set to <code>true</code>.</td><td>5 per app.</td></tr></tbody></table><br/>

## <a id="limitsonfieldsformodcomps"></a>Limits on Fields for All Model Components

<table><thead><tr><th>Field</th><th>Limit</th></tr></thead><tbody><tr><td><code>name</code></td><td>100 characters.</td></tr><tr><td><code>id</code></td><td>Zero to Short.MAX_VALUE (32767).</td></tr><tr><td><code>label</code></td><td>150 characters.</td></tr></tbody></table><br/>

## <a id="limitsonbusobjs"></a>Limits on Business Objects

<table><thead><tr><th>Description</th><th>Limit</th></tr></thead><tbody><tr><td>Number of instances (Extend Core and Legacy SKUs).</td><td><p>10 million instances per tenant, excluding deleted instances. This limit is shared across all Extend business objects and attachment objects in the tenant.</p> <p>When you delete instances, they will no longer appear on the <b>Purge Summary Report</b>.</p> <p>To display the instance count for Extend business objects and attachments in a tenant, access the <b>Extend Object Instance Count</b> report, secured by the <i>Manage: App Manager</i> domain in the System functional area.</p></td></tr><tr><td>Number of instances (Extend Professional SKU).</td><td><p>100 million instances per tenant, excluding deleted instances. This limit is shared across all Extend business objects and attachment objects in the tenant.</p> <p>When you delete instances, they will no longer appear on the <b>Purge Summary Report</b>.</p> <p>To display the instance count for Extend business objects and attachments in a tenant, access the <b>Extend Object Instance Count</b> report, secured by the <i>Manage: App Manager</i> domain in the System functional area.</p></td></tr><tr><td>Number of fields.</td><td>50 per business object.</td></tr><tr><td>Number of derived fields.</td><td>40 per business object.</td></tr><tr><td>Number of fields you can index.</td><td>5 per business object, in addition to <code>SINGLE_INSTANCE</code> fields that Extend indexes automatically. You can't index derived fields or <code>MULTI_INSTANCE</code> fields.</td></tr><tr><td>Number of <code>SINGLE_INSTANCE</code> and <code>MULTI_INSTANCE</code> fields.</td><td>10 per business object.</td></tr></tbody></table><br/>

## <a id="limitsonbps"></a>Limits on Business Processes

<table><thead><tr><th>Field</th><th>Limit</th></tr></thead><tbody><tr><td><code>description</code></td><td>500 characters.</td></tr></tbody></table><br/>

## <a id="limitsonattobj"></a>Limits on Attachment Objects

<table><thead><tr><th>Description</th><th>Limit</th></tr></thead><tbody><tr><td>Number of instances (Extend Core and Legacy SKUs).</td><td><p>10 million instances per tenant, excluding deleted instances. This limit is shared across all Extend business objects and attachment objects in the tenant.</p> <p>When you delete instances, they will no longer appear on the <b>Purge Summary Report</b>.</p> <p>To display the instance count for Extend business objects and attachments in a tenant, access the <b>Extend Object Instance Count</b> report, secured by the <i>Manage: App Manager</i> domain in the System functional area.</p></td></tr><tr><td>Number of instances (Extend Professional SKU).</td><td><p>100 million instances per tenant, excluding deleted instances. This limit is shared across all Extend business objects and attachment objects in the tenant.</p> <p>When you delete instances, they will no longer appear on the <b>Purge Summary Report</b>.</p> <p>To display the instance count for Extend business objects and attachments in a tenant, access the <b>Extend Object Instance Count</b> report, secured by the <i>Manage: App Manager</i> domain in the System functional area.</p></td></tr><tr><td>Number of fields you can index.</td><td>5 per attachment object, in addition to <code>SINGLE_INSTANCE</code> fields that Extend indexes automatically. You can't index derived fields or <code>MULTI_INSTANCE</code> fields.</td></tr><tr><td>Maximum size of attachment.</td><td>30 MB</td></tr></tbody></table><br/>

## <a id="limitsondecfields"></a>Limits on Decimal Fields

<table><thead><tr><th>Description</th><th>Limit</th></tr></thead><tbody><tr><td>Number of decimal places.</td><td>10</td></tr></tbody></table><br/>

## <a id="limitsonintfields"></a>Limits on Integer Fields

<table><thead><tr><th>Description</th><th>Limit</th></tr></thead><tbody><tr><td>Number of digits.</td><td>99 (positive or negative).</td></tr></tbody></table><br/>

## <a id="limitsonderfields"></a>Limits on Derived Fields

<table><thead><tr><th>Description</th><th>Limit</th></tr></thead><tbody><tr><td>Length of expression.</td><td>1000 characters.</td></tr></tbody></table><br/>

## <a id="limitsonprescomps"></a>Limits on Presentation Components

<table><thead><tr><th>Limit</th><th>Maximum Value</th></tr></thead><tbody><tr><td>Number of pages per app.</td><td>75</td></tr><tr><td>Endpoint timeout.</td><td>24 seconds</td></tr><tr><td><p><code>fileUploader</code> attachment file size.</p> <p>To override the default maximum file size, set the <code>maxFileSize</code> attribute of <code>fileUploader</code> to the maximum number of bytes.</p></td><td>10 MB</td></tr><tr><td>Number of inbound endpoints.</td><td>30 non-deferred inbound endpoints in PMDs and Pods.</td></tr><tr><td>Number of outbound endpoints.</td><td>30</td></tr><tr><td>PMD request timeout. A request can include initial page loads, page submissions, and remote validations. A single request can call multiple endpoints.</td><td>60 seconds</td></tr><tr><td><code>richText</code> text limit.</td><td>5 MB</td></tr><tr><td>Size of presentation files (<code>.pmd</code>, <code>.amd</code>, <code>.smd</code>, <code>.pod</code>, <code>.script</code> files).</td><td>100 KB</td></tr><tr><td>Size of response payload from an endpoint.</td><td>25 MB</td></tr><tr><td>Number of characters on the <code>text</code> widget and the <code>label</code> attribute on all widgets.</td><td>255</td></tr><tr><td>Number of <code>editWizard</code> widgets per app.</td><td>15 (combined limit with flow definitions).</td></tr><tr><td>Number of flow definitions per app.</td><td>15 (combined limit with <code>editWizard</code> widgets).</td></tr></tbody></table><br/>

## <a id="limitsonpmdscripting"></a>Limits on PMD Scripting

<table><thead><tr><th>Limit</th><th>Maximum Value or Recommendation</th></tr></thead><tbody><tr><td>Call frames</td><td>The number of levels in a program stack execution, such as recursive function calls, has a maximum of 25.</td></tr><tr><td>CPU time</td><td>The CPU time consumed for each script execution has a maximum of 5 seconds. This limit doesn't include endpoint invocation and widget API calls because these calls are executed in separate threads.</td></tr><tr><td>Levels of nested script modules</td><td>The maximum number of levels of nested script modules is 2. Example of 2 levels of nested scripts: script1 that includes script 2 that includes script 3. If script 3 includes another script, it exceeds the limit, and receives a validation error.</td></tr><tr><td>Memory usage</td><td>We allocate memory to accommodate each script execution while we protect our service regarding memory usage. If your script exceeds the allocated memory threshold, the script will throw an error. <p><b>Note:</b> We highly recommend that you follow best practices for proper memory management in your PMD scripts. See PMD Scripting Memory Management in <a href="/wcp_docs/asx1597867253394.html">Concept: PMD Best Practices</a>.</p></td></tr><tr><td>Script size</td><td>The script size limit within the maximum PMD file size, which is 100 KB.</td></tr></tbody></table><br/>

## <a id="limsoncardcompsextcards"></a>Limits on Card Components (Extend Cards)

<table><thead><tr><th>Limit</th><th>Maximum Value or Recommendation</th></tr></thead><tbody><tr><td>Number of Card components per app.</td><td>3</td></tr><tr><td>Number of Card Tenant Settings components per app.</td><td>3</td></tr><tr><td>Number of non-deferred inbound endpoints per Card component.</td><td>2</td></tr></tbody></table><br/>

## <a id="tenlimsonextcards"></a>Tenant Limits on Extend Cards

To protect the integrity of your Home Page and tenant, Workday Home Page has these timeouts:

<table><thead><tr><th>Limit</th><th>Maximum Value</th></tr></thead><tbody><tr><td>Inbound endpoint timeout on a Card.</td><td>5 seconds</td></tr><tr><td><p>Card load timeout on the Workday Home Page.</p> <p><b>Note:</b> If the Card load reaches the timeout limit, the Home Page doesn't display the card.</p></td><td>15 seconds</td></tr></tbody></table><br/>

If you plan to configure your Card on the Workday Home Page, we strongly suggest you test the response time of your endpoints prior to building the Card.

All of these limits are enforced in the tenant during configuration.

<table><thead><tr><th>Limit</th><th>Maximum Value</th></tr></thead><tbody><tr><td>Extend Cards on Home Page across the tenant (regardless of Security group).</td><td>4</td></tr><tr><td>Extend Cards per Hub.</td><td>4</td></tr><tr><td>Extend Card per Custom Search Result.</td><td>1</td></tr><tr><td>Extend Card per Journey Step.</td><td>1</td></tr></tbody></table><br/>

<b>Note:</b> You can deploy a single Extend Card to your tenant and configure it on multiple entry points in Workday.

## <a id="limitsonAiWidgets"></a>Limits on AI Widgets

<table><thead><tr><th>Limit</th><th>Maximum Value</th></tr></thead><tbody><tr><td>Number of buttons in an <code>aiPrompt</code>.</td><td>2</td></tr><tr><td>Number of richText tags that use aiPrompt in an Extend app.</td><td>3</td></tr><tr><td>Number of characters within the prompt, including referenced values.</td><td>1000</td></tr></tbody></table><br/>

## <a id="limitsongraphapi"></a>Limits on Graph API

<table><thead><tr><th>Limit</th><th>Maximum Value or Recommendation</th></tr></thead><tbody><tr><td>Response page limit</td><td>Default is 20. Maximum is 100.</td></tr><tr><td>Graph API request timeout</td><td>3 minutes <p>If the processing time exceeds the limit, the query or mutation will return an error, and the response will include only the processed fields.</p></td></tr><tr><td>Query complexity</td><td>Errors can occur if a query or mutation operation is overly complex. An operation can be complex if it has too many nested levels of requested data or it takes too long to process.</td></tr><tr><td>Rate limiting</td><td>We rate limit requests when we determine that the number or complexity of queries and mutations start to impact the overall tenant health. <p>A Graph API request returns an HTTP response code of <b>429 Too Many Requests</b> when other requests overload the resources on your tenant. If you encounter this response code, we recommend that you implement:</p><ul><li>An exponential back-off retry mechanism for the process that generates the API requests.
</li><li>Caching.
</li></ul></td></tr><tr><td>Related business objects</td><td>When you query a multi-instance field as a related business object, a limit of 500 related business object instances will be returned. The request will return an error if there are more than 500 instances in the related business object.</td></tr><tr><td>File attachment size</td><td>30 MB maximum per file attachment. Graph API supports the file types that have been configured on the tenant. See the System Setup section in <a href="https://doc.workday.com/admin-guide/en-us/manage-workday/tenant-configuration/tenant-setup/dan1370797880489.html">Administrator Guide: Reference: Edit Tenant Setup - System</a>. <p><b>Note:</b> If you use Graph API with the <code>fileUploader</code> widget in an Extend app, the limits imposed by the <code>fileUploader</code> overrides the Graph API limits. See the fileUploader limits. See the <code>fileUploader</code> limits in <a href="/wcp_docs/GUID-54854abf-9a2e-4788-8aa3-9a92ddf1e71e.html">Reference: Limits on Presentation Components</a>.</p></td></tr></tbody></table><br/>

## <a id="orchexectimeouts"></a>Orchestration Execution Timeouts

<table><thead><tr><th>Type</th><th>Limit</th><th>Description</th></tr></thead><tbody><tr><td>Workday Home Card orchestration runtime duration</td><td>5 minutes</td><td>The total processing time allowed for a Home Card orchestration</td></tr><tr><td>Synchronous orchestration runtime duration (Extend apps only)</td><td>5 minutes</td><td>The total processing time allowed for a synchronous orchestration.</td></tr><tr><td>Asynchronous orchestration runtime duration  (Extend apps only)</td><td>48 hours</td><td>The total processing time allowed for an asynchronous orchestration. </td></tr><tr><td>Workday Integration System orchestration runtime duration</td><td>48 hours</td><td>The total processing time allowed for an Integration System orchestration.</td></tr><tr><td>Workday Business Process orchestration runtime callback period</td><td>90 days</td><td>The period during which a Business Process triggered by an orchestration must complete.</td></tr><tr><td>Recursive self-calls from a synchronous orchestration</td><td>31 iterations</td><td>The number of times a synchronous orchestration can call itself before failing.</td></tr></tbody></table><br/>

## <a id="orchprocexectimeouts"></a>Process Execution Timeouts

<table><thead><tr><th>Type</th><th>Limit</th><th>Description</th></tr></thead><tbody><tr><td>Individual process (Prod)</td><td>60 minutes</td><td>The maximum time allowed for any process in an app that's been promoted to a production tenant. For more information, see: <a href="/wcp_docs/GUID-9473ecbe-0243-41f0-9fe6-fc015e468a56.html">Concept: Orchestration Processes</a>.</td></tr><tr><td>Individual process (Nonprod)</td><td>45 minutes</td><td>The maximum time allowed for any process in an app that hasn't been promoted to a production tenant. For more information, see: <a href="/wcp_docs/GUID-9473ecbe-0243-41f0-9fe6-fc015e468a56.html">Concept: Orchestration Processes</a>.</td></tr></tbody></table><br/>

## <a id="orchdatamemlimits"></a>Data and Memory Limits

<table><thead><tr><th>Type</th><th>Limit</th><th>Description</th></tr></thead><tbody><tr><td>Concurrent data in memory</td><td>200 MB</td><td>The maximum amount of data an orchestration can have in memory at the same time. <p>The figure includes the data held by all in-scope values in memory as well as any temporary values created while evaluating expressions. It doesn't include the heap space taken up by an orchestration.</p> <p>Note that Workday manages large data items on disk in file-backed data structures. This feature means that an orchestration can have many values that are larger than the 20 MB limit in scope concurrently because they're not held in memory.</p></td></tr><tr><td>Concurrent data on disk</td><td>2 GB</td><td>The maximum amount of data an orchestration can have on disk in file-backed data structures at the same time. <p>Note that once values go out of scope, they're cleaned up by the runtime. Any associated data on disk no longer counts towards this limit.</p></td></tr></tbody></table><br/>

## <a id="orchmesssizelimits"></a>Message Size Limits

<table><thead><tr><th>Type</th><th>Limit</th><th>Description</th></tr></thead><tbody><tr><td>Launch message size</td><td>20 MB</td><td>The maximum size of the request message used to launch an orchestration.</td></tr><tr><td>Response message size</td><td>500 MB</td><td>The maximum size of an individual HTTP message response returned from an HTTP API call.</td></tr></tbody></table><br/>

## <a id="orchstructlimits"></a>Orchestration Structure Limits

<table><thead><tr><th>Type</th><th>Limit</th><th>Structure</th></tr></thead><tbody><tr><td>Synchronous orchestration triggered by a presentation page</td><td>25 seconds</td><td>The total processing time allowed for a synchronous orchestration triggered by a presentation page. Takes precedence over any timeouts you configured on the orchestration itself. If you anticipate a total processing time of longer than 25 seconds, Workday recommends that you use an asynchronous orchestration.</td></tr><tr><td>Orchestrations and suborchestrations in an app</td><td>150</td><td>The total number of orchestrations and suborchestrations allowed in a single app. Extend warns you when the total reaches 125.</td></tr><tr><td>Steps in an orchestration</td><td>300</td><td>The total number of steps allowed in an individual orchestration. Extend warns you when the total reaches 200.</td></tr></tbody></table><br/>

## <a id="tokentimeout"></a>Token Timeout on API Explorers

<table><thead><tr><th>Limit</th><th>Maximum Value</th></tr></thead><tbody><tr><td>Access token on Graph API Explorer, REST API Explorer, SOAP API Explorer</td><td>60 minutes</td></tr></tbody></table><br/>

## <a id="apiclienttimeout"></a>Workday API Client Timeout

All synchronous Workday API calls from Extend and Integration Apps go through WCP API Gateway. A client timeout occurs when the total request and response time of an API call exceeds the limit. In general, synchronous Workday API calls that go through WCP API Gateway can’t exceed 5 minutes, except for Graph API.

This table lists the client timeout limit for each type of Workday API:

<table><thead><tr><th>API Type</th><th>Client Timeout (in minutes)</th></tr></thead><tbody><tr><td>Graph API</td><td>3</td></tr><tr><td>REST API</td><td>5</td></tr><tr><td>SOAP API</td><td>5</td></tr><tr><td>RaaS API</td><td>5</td></tr><tr><td>WQL (Extend & Integration Apps)</td><td>5</td></tr></tbody></table><br/>

## <a id="wqlresultlimits"></a>WQL Result Limits

WQL queries return a maximum of 1 million rows. Both tenanted hosts and the Workday Cloud Platform (WCP) API Gateway (api.workday.com) support WQL requests, with these response timeout limits:

-   Tenanted hosts: 30-minute timeout.
-   WCP API Gateway: 5-minute timeout.


Refer to this table for query and `LIMIT` clause behavior.

<table><thead><tr><th>Rows Returned By Query</th><th>LIMIT Clause in WQL Query</th><th>Query Behavior</th></tr></thead><tbody><tr><td>>1 million</td><td>None</td><td>Query fails.</td></tr><tr><td>>1 million</td><td><=1 million</td><td>Query succeeds and returns a maximum of 1 million rows. You can view 10,000 rows at a time.</td></tr><tr><td><=1 million</td><td>None or <=1 million</td><td>Query succeeds and returns all rows. You can view 10,000 rows at a time.</td></tr></tbody></table><br/>

<b>Note:</b> Workday reserves the keyword `LIMIT` for both a clause and a pagination parameter. The LIMIT keyword isn't case-sensitive. We use uppercase and lowercase to help differentiate between clauses and pagination parameters.

-   Use the `LIMIT` clause to limit the number of total rows returned in a query response.
-   Use the `limit` parameter to specify how many rows to display per page of query response.


