Skip to main content

Job

A jobJobA high-level container, comparable to a project, that bundles related tasks together with common information such as customer, billing, and address. in Dime.Scheduler is the encompassing entity that groups tasksTaskA unit of work that belongs to a job. It appears in the open task list until it is scheduled to a resource.. This can be a service order header with multiple lines, a projectProjectA job seen as a whole in project planning: a body of work with a budget, a team, dependencies and a deadline. Its tasks are still planned as ordinary appointments on the board. with several tasks, a cargo transport with multiple containers, etc. A job record is mandatory for a task. In other words, you cannot create a task if the corresponding job record does not exist.

The following entities are exposed through the API.

Upsert​

Inserts or updates a job record.

NameData TypeDefaultRequiredDescription
SourceAppnvarchar(30)✔️See API reference
SourceTypenvarchar(10)✔️See API reference
JobNonvarchar(50)✔️
ShortDescriptionnvarchar(50)✔️
Descriptionnvarchar(MAX)
Typenvarchar(50)
Namenvarchar(255)
Categorynvarchar(100)See API reference
TimeMarkernvarchar(100)See API reference
Pinnvarchar(100)See API reference
CustomerNonvarchar(20)
CustomerNamenvarchar(50)
CustomerAddressnvarchar(MAX)
CustomerAddressGeoLongnvarchar(50)
CustomerAddressGeoLatnvarchar(50)
CustomerPhonenvarchar(50)
CustomerMobilePhonenvarchar(50)
CustomerEmailnvarchar(50)
ContactNonvarchar(20)
ContactNamenvarchar(50)
ContactAddressnvarchar(MAX)
ContactAddressGeoLongnvarchar(50)
ContactAddressGeoLatnvarchar(50)
ContactPhonenvarchar(50)
ContactEmailnvarchar(50)
SiteNonvarchar(20)
SiteNamenvarchar(50)
SiteAddressnvarchar(MAX)
SiteAddressGeoLongnvarchar(50)Used to diplay the job on the map.
SiteAddressGeoLatnvarchar(50)Used to diplay the job on the map.
SitePhonenvarchar(50)
SiteEmailnvarchar(50)
SiteRegionnvarchar(10)Used in the geocoding process.
SiteStreetnvarchar(255)Used in the geocoding process.
SiteStreetNonvarchar(20)Used in the geocoding process.
SitePostcodenvarchar(20)Used in the geocoding process.
SiteCitynvarchar(50)Used in the geocoding process.
SiteCountynvarchar(50)Used in the geocoding process.
SiteStatenvarchar(50)Used in the geocoding process.
SiteCountrynvarchar(50)Used in the geocoding process.
SiteFromNonvarchar(20)
SiteFromNamenvarchar(50)
SiteFromAddressnvarchar(MAX)
SiteFromAddressGeoLongnvarchar(50)
SiteFromAddressGeoLatnvarchar(50)
SiteFromPhonenvarchar(50)
SiteFromEmailnvarchar(50)
SiteFromRegionnvarchar(10)
SiteFromStreetnvarchar(255)
SiteFromStreetNonvarchar(20)
SiteFromPostcodenvarchar(20)
SiteFromCitynvarchar(50)
SiteFromCountynvarchar(50)
SiteFromStatenvarchar(50)
SiteFromCountrynvarchar(50)
BillNonvarchar(20)
BillNamenvarchar(50)
BillAddressnvarchar(MAX)
BillAddressGeoLongnvarchar(50)
BillAddressGeoLatnvarchar(50)
BillPhonenvarchar(50)
BillEmailnvarchar(50)
BillRegionnvarchar(10)
Importanceint0See API reference
CreationDateTimedatetime
CustomerReferencenvarchar(50)
Languagenvarchar(10)
Responsiblenvarchar(50)
Creatornvarchar(50)
FreeText1nvarchar(100)See API reference
FreeText2nvarchar(100)See API reference
FreeText3nvarchar(100)See API reference
FreeText4nvarchar(100)See API reference
FreeText5nvarchar(100)See API reference
FreeText6nvarchar(100)See API reference
FreeText7nvarchar(100)See API reference
FreeText8nvarchar(100)See API reference
FreeText9nvarchar(100)See API reference
FreeText10nvarchar(100)See API reference
FreeText11nvarchar(100)See API reference
FreeText12nvarchar(100)See API reference
FreeText13nvarchar(100)See API reference
FreeText14nvarchar(100)See API reference
FreeText15nvarchar(100)See API reference
FreeText16nvarchar(100)See API reference
FreeText17nvarchar(100)See API reference
FreeText18nvarchar(100)See API reference
FreeText19nvarchar(100)See API reference
FreeText20nvarchar(100)See API reference
FreeDecimal1decimal(18, 6)See API reference
FreeDecimal2decimal(18, 6)See API reference
FreeDecimal3decimal(18, 6)See API reference
FreeDecimal4decimal(18, 6)See API reference
FreeDecimal5decimal(18, 6)See API reference
FreeDate1datetimeSee API reference
FreeDate2datetimeSee API reference
FreeDate3datetimeSee API reference
FreeDate4datetimeSee API reference
FreeDate5datetimeSee API reference
FreeBit1bit0See API reference
FreeBit2bit0See API reference
FreeBit3bit0See API reference
FreeBit4bit0See API reference
FreeBit5bit0See API reference
EnableManualSelectionbit0
AvailableInGanttbit0
StartDatedatetime
EndDatedatetime
AllowDependenciesbit1
Notenvarchar(max)
OverRuleGanttPlanningbit0
ReadOnlybit0
Statusnvarchar(20)See API reference
IsOpenbitSee API reference
  • This endpoint is available in the import API endpoint /import via the procedure mboc_upsertJob.
  • Example body:
    [
    {
    "StoredProcedureName": "mboc_upsertJob",
    "ParameterNames": ["SourceApp", "SourceType", "JobNo", "ShortDescription"],
    "ParameterValues": ["BC", "JOB", "JOB001", "Important job"]
    }
    ]

Delete​

Deletes a job record. The behavior of this procedure depends on the CheckAppointments flag:

  • When CheckAppointments is true: the job is not deleted when there are appointmentsAppointmentA task scheduled to a resource for a specific period - the scheduled instance you see on the planning board. for any task attached to the job.
  • When CheckAppointments is false: the job is deleted without further checks. When a job is deleted, all tasks and appointments attached to the job, if any, are also deleted.
NameData TypeDefaultRequiredDescription
SourceAppnvarchar(30)✔️See API reference
SourceTypenvarchar(10)✔️See API reference
JobNonvarchar(50)✔️
CheckAppointmentsbit
SentFromBackOfficebit1
  • This endpoint is available in the import API endpoint /import via the procedure mboc_deleteJob.
  • Example body:
    [
    {
    "StoredProcedureName": "mboc_deleteJob",
    "ParameterNames": ["SourceApp", "SourceType", "JobNo"],
    "ParameterValues": ["BC", "JOB", "JOB001"]
    }
    ]

Read​

Two REST endpoints read jobs back; there is no import procedure for reading. GET /job returns every job, and GET /job/{jobNo} returns one job by its job number, or 404 Not Found when no job carries that number. See the REST API reference.

Project member​

A project member is a resourceResourceAn entity that can carry out work - a person, vehicle, tool, or room - that you schedule on the planning board. who is on a project, whether or not any work has been assigned to them yet. Membership is what the team tab of a project lists, and it is one of the two things that let a resource log time against the project's tasks: being a member, or holding an appointment on one of them.

Membership is explicit. It is not inferred from appointments, so a resource planned on a task is not a member until you say so, and a member keeps their place after their appointments are gone.

Upsert project member​

Adds a resource to a project, or changes the period of an existing membership.

NameData TypeDefaultRequired
SourceAppnvarchar(30)✔️
SourceTypenvarchar(10)✔️
JobNonvarchar(50)✔️
ResourceNonvarchar(50)✔️
StartDatedatetime
EndDatedatetime

The job and the resource together are the membership's identity, so sending the same pair again updates the existing membership rather than adding a second one. StartDate and EndDate bound the period the membership applies to; leave both empty for an open-ended one. On an update, an omitted bound keeps its stored value.

The job is resolved through SourceApp, SourceType and JobNo, and a job that does not exist is rejected with DATA002. A resource number that matches nothing is rejected with DATA004.

  • This endpoint is available in the import API endpoint /import via the procedure mboc_upsertProjectMember.
  • Example body:
    [
    {
    "StoredProcedureName": "mboc_upsertProjectMember",
    "ParameterNames": ["SourceApp", "SourceType", "JobNo", "ResourceNo", "StartDate"],
    "ParameterValues": ["BC1", "JOB", "JOB001", "ENG01", "2026-03-01"]
    }
    ]

Delete project member​

Removes the resource from the project. Their appointments on the project's tasks are left untouched.

NameData TypeDefaultRequired
SourceAppnvarchar(30)✔️
SourceTypenvarchar(10)✔️
JobNonvarchar(50)✔️
ResourceNonvarchar(50)✔️
  • This endpoint is available in the import API endpoint /import via the procedure mboc_deleteProjectMember.

API reference​

Source​

Dime.Scheduler is a centralized planning application. One of its key tenets is the ability to accommodate data from different origins. For instance, it is perfectly acceptable to plan work orders from Business Central, CRM, imported Excel sheets, etc., and Dime.Scheduler won't break a sweat because of the existence of the Source App and Source Type fields in the data model.

Source App​

When the planner creates an appointment for a resource or task, Dime.Scheduler knows which system to notify. Through the connector setup, Dime.Scheduler will find a matching SourceApp and subsequently send the appointment to the corresponding URI.

The source appSource appAn identifier Dime.Scheduler attaches to data so it can route a change back to the correct back-office system. field is a unique identifier that identifies 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. instance such as a tenant of Business Central, a test environment, an instance of CRM cloud, or any other application you wish to use to feed data into Dime.Scheduler.

Back officeERP · CRM · LoB
served bySource App
ConnectorBound to one Source App
creates
JobProject container
contains
TaskWork to do
scheduled as
AppointmentPlanning decision
Step 1 of 4Back office Connector

The back office is bound to a connector

Each back-office instance - a Business Central tenant, a CRM environment, an Excel sheet - is identified by a Source App. The connector is configured for that one Source App and nothing else, so Dime.Scheduler always knows which system any record came from.

Source Type​

The SourceType is used inside the back-office system itself. A source typeSource typeAn identifier that, together with the source app, tells Dime.Scheduler which back-office table a record belongs to. represents a distinct entity such as a service orderService orderA Business Central service management document. The service order solution plans it as one task or as one task per service item line, and writes the assignment back as a resource allocation., production orderProduction orderA Business Central manufacturing order with routing lines. The production routing solution puts those lines on the planning board against work and machine centers while BC’s own rules still hold., assembly orderAssembly orderA Business Central document that says what to build. The assembly order solution schedules the resources that build it and keeps the order’s dates in sync., etc.

The standard connectorsConnectorAn integration that links Dime.Scheduler to a back-office system, routing data in and scheduling decisions back out. that Dime Software provides make it possible to plan different types of resources and tasks. When Dime.Scheduler posts an appointment to a standard connector, it ends up in a staging tableStaging tableThe Dime.Scheduler Appointments table in Business Central where incoming appointments land first. Business Central processes rows from there, so a row can be received and still fail processing., which is then processed by the connector to ensure the appointment produced in Dime.Scheduler is traced back to the original record using the externally identifiable fields (JobNo, TaskNo, ResourceNo) that identify the record.

Importance​

Controls the visual indicatorIndicatorCollective term for the visual signals - categories, time markers, pins, and tags - that identify and label appointments. of the planned taskPlanned taskAn appointment together with the resources assigned to it - the full picture of what will be done, by whom, and when. in the planning boardPlanning boardThe main graphical scheduling surface where dispatchers drag tasks onto resources across a timeline.. Read more about importance.

Category​

Controls the visual indicator of the planned task in the planning board. Read more about categories.

Time Marker​

Controls the visual indicator of the planned task in the planning board. Read more about time markers.

Pin​

Controls the visual indicator of the planned task in the map. Read more about marker colors.

Status​

Status carries the project's status as the 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. knows it, in its own words. Dime.Scheduler has no status vocabulary of its own: the value is mapped onto the work statesWork stateA lane on the task or project Kanban board, defined by an administrator. Statuses arriving from the back office are mapped onto work states so the board speaks your organization’s vocabulary. that make up the columns of the project Kanban board, and a status that matches no column lands in Unmapped. The value is stored without leading or trailing whitespace. Sending an empty value clears the status; leaving the parameter out keeps the status Dime.Scheduler already holds.

IsOpen says whether the project is open or closed. Leave it out and Dime.Scheduler works it out from the status when the job is created and whenever its status changes: the project is closed when its status is mapped, for the job's SourceApp and SourceType, to a work state in the Done category, and open otherwise. Send IsOpen to set the open state yourself; the value is stored as sent and takes precedence over the status in that call. A later change of status works the open state out again.

Closing a project locks its appointmentsAppointmentA task scheduled to a resource for a specific period - the scheduled instance you see on the planning board., and reopening it unlocks them. Appointments sent for a task of a closed project are stored locked. A job can also be closed and reopened by hand from the jobs screen.

Free fields​

Free fieldsFree fieldOne of the unmapped fields on jobs, tasks and appointments that a back office can fill with its own data, each with a localizable caption. are unmapped fields that you can link custom fields to.

The captionCaptionThe label shown for a field or entity in the interface, translatable per language. A tenant that calls jobs "projects" changes the caption, not the data model. can be changed through the captions localization system. Either use the GUI and look for the corresponding field of the corresponding source table for the 'DATABASEFIELD' context, or use the API.