Limitations
- Power Automate
When designing a flow to automate Project Operations, we need to be mindful of how many actions we nest. As the flow grows in complexity, it’s a good practice to branch out into child flows, this will also aid testing later on.
Name | Limit | Notes |
---|---|---|
Allowed nesting depth for actions | 8 | Add child flows if you need more than eight levels of nesting. |
- Scheduling API
Name | Limit | Notes |
---|---|---|
Maximum of open operation sets | 10 | This is a hard limit and can only be bypassed by executing created operation sets. |
Maximum of operations per operation set | 200 | This is a hard limit and can only be bypassed by executing created operation sets. |
Maximum of tasks per project | 500 | Hard limit |
Project Schedule APIs can only be used by Users with Microsoft Project License. They can’t be used by:
- Application users
- System users
- Integration users
- Other users that don’t have the required license
Please carefully review the documentation provided by Microsoft: Schedule API Preview
Understanding Core Concepts
For all of our interactions with the Scheduling API we need to use the “Perform an unbound action” action.

Below is a set of actions you can run in “Perform an unbound action”.
API | Description |
---|---|
msdyn_CreateProjectV1 | This API is used to create a project. The project and default project bucket are created immediately. |
msdyn_CreateTeamMemberV1 | This API is used to create a project team member. |
msdyn_CreateOperationSetV1 | This API is used to schedule several requests that must be performed within a transaction. |
msdyn_PssCreateV1 | This API is used to create an entity. The entity can be any of the Project scheduling entities that support the create operation. |
msdyn_PssCreateV2 | This API is used to create multiple entities in one action. |
msdyn_PssUpdateV1 | Used to update an entity. |
msdyn_PssUpdateV2 | Update multiple entities in one action. |
msdyn_PssDeleteV1 | Used to delete an entity. |
msdyn_PssDeleteV2 | Delete multiple entities in one action. |
msdyn_ExecuteOperationSetV1 | Execute all operations within an operation set. |
msdyn_PssUpdateResourceAssignmentV1 | Update a Resource Assignment planned work contour. |
When you create a project using msdyn_CreateProjectV1
you will see something like this:

Case Scenario
Let’s say we need to create a Project and a Project Task. Here is how we do it:

Create a Project:
Action name: trim('msdyn_CreateProjectV1')
{
“Project”: {
“msdyn_subject”: “Lemon tree”,
“msdyn_schedulemode”: 192350001,
“msdyn_scheduledstart”: @{string(utcNow())},
“msdyn_customer@odata.bind”: “accounts(@{string(‘00000000-0000-0000-0000-000000000000’)})”
}
}
Create Project Bucket: Action name: msdyn_PssCreateV1
{
“msdyn_name”: “Schedule API Bucket for proj”,
“@odata.type”: “Microsoft.Dynamics.CRM.msdyn_projectbucket”,
“msdyn_project@odata.bind”: “msdyn_projects(@{variables(‘Project ID’)})”
}