Task assignment
A task assignment allocates a resourceResourceAn entity that can carry out work - a person, vehicle, tool, or room - that you schedule on the planning board. to a taskTaskA unit of work that belongs to a job. It appears in the open task list until it is scheduled to a resource.. It answers "who is going to do this, and roughly how much of them do we need", which is a different question from "when exactly does it happen". The appointmentAppointmentA task scheduled to a resource for a specific period - the scheduled instance you see on the planning board. answers the second one.
That distinction matters for planning. A back officeBack officeThe ERP or business system Dime.Scheduler plans for - most often Microsoft Dynamics 365 Business Central. It owns the master data and remains authoritative over what it receives. can tell Dime.Scheduler that a task needs one engineer at 50% for the second half of March without committing to specific days, and the planner then turns that allocation into appointments on the board. Assignments also survive rescheduling: moving the appointments does not change who was allocated.
Assignments are the layer the project planning views read. If you only ever push appointments, you do not need this entity.
Upsert
Creates or updates the allocation of one resource to one task.
| Name | Data Type | Default | Required |
|---|---|---|---|
| SourceApp | nvarchar(30) | ✔️ | |
| SourceType | nvarchar(10) | ✔️ | |
| JobNo | nvarchar(50) | ✔️ | |
| TaskNo | nvarchar(50) | ✔️ | |
| ResourceNo | nvarchar(50) | ✔️ | |
| UnitPercentage | int | 100 | |
| ExternalId | uniqueidentifier | ||
| StartDate | datetime2 | ||
| EndDate | datetime2 | ||
| Quantity | decimal(18,6) | ||
| QuantityUnit | int | ||
| Description | nvarchar(250) |
UnitPercentage is how much of the resource the task needs, clamped to the range 0 to 100. A resource allocated at 50 is expected to spend half their capacityCapacityThe amount of working time a resource has available in a given period, used to spot over- and under-planning. on this task.
Quantity and QuantityUnit express the size of the allocation instead of its intensity. QuantityUnit takes 1 for hours and 2 for full-time equivalents.
StartDate and EndDate bound the window the allocation applies to. Omitting either one keeps whatever is already stored, so you can move the end date of an allocation without resending the rest of it.
Sending more than one allocation for the same pair
A task and a resource can hold several allocations, for instance one per phase of the work. ExternalId is what tells them apart: it is your own identifier for a specific allocation, and Dime.Scheduler will update the allocation carrying that id rather than the first one it finds.
Omit ExternalId and Dime.Scheduler generates one on create. If you then send a second allocation for the same task and resource without an id, the request is ambiguous and fails with DATA014. Send the ExternalId whenever a pair can hold more than one allocation.
- Import
- API
- This endpoint is available in the import API endpoint
/importvia the proceduremboc_upsertTaskAssignment. - Example body:
[{"StoredProcedureName": "mboc_upsertTaskAssignment","ParameterNames": ["SourceApp", "SourceType", "JobNo", "TaskNo", "ResourceNo", "UnitPercentage", "StartDate", "EndDate"],"ParameterValues": ["BC1", "JOB", "JOB001", "1000", "ENG01", "50", "2026-03-16", "2026-03-31"]}]
See POST /taskAssignment in the REST API reference.
What happens when you assign a crew
If ResourceNo names a crew rather than an individual, the assignment fans out: the crew itself receives the allocation, and every member the crew resolves to also receives an assignment derived from it.
The fan-out happens when the assignment is created. Editing the crewCrewA resource that stands for a group of other resources. Dropping work on a crew fans the booking out to every member, which suits people who always work together.'s membership afterwards does not retroactively rewrite existing assignments, which keeps a published plan stable when someone joins or leaves the crew. Removing or replacing the crew on the task takes its derived members with it.
Booking a resource whose group behaviour is Grouping is rejected with APP002: a departmentDepartmentA grouping of resources used to sort and group rows on the planning board and in the grids. As a group behavior in the crews view, a department cannot be booked; it exists for structure and reporting. exists to roll capacity up, not to do the work.
Delete
Removes the allocation.
| Name | Data Type | Default | Required |
|---|---|---|---|
| SourceApp | nvarchar(30) | ✔️ | |
| SourceType | nvarchar(10) | ✔️ | |
| JobNo | nvarchar(50) | ✔️ | |
| TaskNo | nvarchar(50) | ✔️ | |
| ResourceNo | nvarchar(50) | ✔️ | |
| ExternalId | uniqueidentifier | ||
| DeleteLinkedAppointments | bit | 0 | |
| SentFromBackOffice | bit | 1 |
By default the appointments that were created from the allocation are left alone, so removing an allocation does not silently wipe a planner's work. Pass DeleteLinkedAppointments as 1 when the back office considers the work cancelled and the appointments should go with it.
- Import
- API
- This endpoint is available in the import API endpoint
/importvia the proceduremboc_deleteTaskAssignment. - Example body:
[{"StoredProcedureName": "mboc_deleteTaskAssignment","ParameterNames": ["SourceApp", "SourceType", "JobNo", "TaskNo", "ResourceNo", "DeleteLinkedAppointments"],"ParameterValues": ["BC1", "JOB", "JOB001", "1000", "ENG01", "1"]}]
See DELETE /taskAssignment in the REST API reference.