Almanac
Microsoft/d365fsDynamics 365

Consultant-focused KB for Microsoft Dynamics 365 Field Service: implementation notes, gotchas, and configuration decisions beyond the official docs — across work orders, scheduling and dispatch, resource management, mobile app, asset management, inspections, IoT, Copilot, and administration.

feature-licensing-light-users-restricted-tables.mdv1 · history
CurrentApplies to BothUpdated 6 days agoSource Microsoft Learn

What it does

Field Service's core tables are restricted tables in Dataverse: reading them is fine with a Power Apps or Power Automate licence, but creating, updating or deleting records in them requires a Dynamics 365 Field Service licence. This is the mechanism that decides which of your peripheral users you actually have to pay Dynamics money for.

Key facts

  • The rule is read versus write. Read access to restricted tables needs no Dynamics 365 licence. Create, update and delete do.
  • Restricted Field Service tables include msdyn_workorder, msdyn_workorderservicetask, msdyn_workorderproduct, msdyn_workorderservice, msdyn_agreement and its booking and invoice setup tables, msdyn_customerasset, the purchase order and RMA/RTV families, msdyn_inventoryjournal, msdyn_productinventory, msdyn_fieldservicesetting, msdyn_scheduleboardsetting, msdyn_schedulingparameter, plus BookableResource, BookableResourceBooking and msdyn_timeoffrequest.
  • Bookings are restricted. That's the one people miss — a Power Apps-licensed user cannot create or move a booking, which rules out most home-grown scheduling front ends.
  • There is a documented exception for self-service: a user self-reporting an issue (Microsoft's example is an employee logging a facilities problem) may create, read, update and delete their own work orders under a Power Apps or Power Pages licence. Completing work orders, or acting as a technician, is not covered.
  • Restricted APIs include msdyn_SearchResourceAvailability, msdyn_SearchResourceAvailabilityForRequirementGroup, msdyn_CreateRequirementGroupBooking, msdyn_CascadeBookingChanges and msdyn_SelectNotToExceed. Custom controls such as the schedule board, booking card, work order list and the inspection survey creator are likewise restricted.
  • Team Members is a named-user licence for light consumption. Its experience is delivered through three designated apps: Customer Service Team Member, Sales Team Member and Project Resource Hub. There is no Field Service Team Member app.
  • Team Member apps are capped at 15 tables of customisation, and Team Member users cannot open custom model-driven apps, the Sales Hub or the Customer Service Hub. The error reads "Invalid License: This app requires a license and you don't have the appropriate license to access this app". Administrators, customisers and makers are exempt from that enforcement.
  • Power Platform admin centre carries a Team Member Conformance Report under Dataverse analytics, which is the only practical way to see whether Team Member usage matches the entitlement.
  • Solution checker has three Field Service licence rules: meta-license-fieldservice-sdkmessages, meta-license-fieldservice-entity-operations and meta-license-fieldservice-customcontrols. The checker is not licence-aware — it flags components that require a licence, it does not know what your tenant owns.

When to use / skip

Reach for this when somebody asks the inevitable question: "can we just build a Power App for the warehouse team / the call handlers / the account managers instead of buying Field Service licences?" The honest answer is usually partly. Read-only dashboards, status lookups and reporting front ends are entirely legitimate on a Power Apps licence, and you should build them that way rather than buying Dynamics licences for people who never write.

Anything that creates a work order on a customer's behalf, moves a booking, closes a task, adjusts inventory or touches an agreement is a Field Service licence. No amount of canvas app cleverness changes that, and the enforcement is at the platform, not at the UI.

Team Members is rarely the answer on a field deployment. With no Field Service Team Member app, the entitlement doesn't line up with anything a field organisation needs, and the temptation to point Team Member users at a custom app runs straight into app-level enforcement.

Configuration decisions

  • Which peripheral personas are genuinely read-only, and whether you can hold that line for the life of the system.
  • Whether customer- or employee-facing intake goes through Power Pages under the self-service exception, or through a licensed internal user creating the work order.
  • Whether reporting goes via Power BI over the Dataverse data — which sidesteps the app-licence argument entirely — or via a model-driven app.
  • Whether solution checker's licence rules run in your build pipeline, and who is expected to interpret the warnings.
  • How you evidence entitlement at audit time: which report, run by whom, how often.

Gotchas

  • Scheduling is the trap. Bookable Resource and Bookable Resource Booking are both restricted, so a "lightweight dispatcher app" is not a lightweight licence.
  • The self-service work order exception is narrow and reads narrowly. Stretching it to cover technicians completing jobs is the single most common licensing overreach on Field Service projects.
  • Solution checker warnings look like defects to a developer. They are not — they say a component needs a Dynamics licence, nothing more. Teams strip perfectly good Field Service functionality out of solutions because nobody explained that.
  • Team Member enforcement bites at app level, not privilege level, so a Team Member user with generous security roles will still be blocked from the app while appearing over-privileged in a role review.
  • Admins, customisers and makers are exempt from Team Member enforcement, which means your test with an admin account proves nothing about what a real user will see.
  • Read access being unrestricted is a licensing statement, not a security statement. Security roles and column-level security still decide what anyone sees.

Consultant notes

  • Get the client's licensing position written down before design, not after. "We'll use Power Apps for that team" is a design assumption with a price tag attached.
  • When you push back on a custom scheduling front end, do it on the restricted-table list rather than on opinion. Naming BookableResourceBooking ends the conversation quickly.
  • Demo the actual failure to the client's architect: a Power Apps-licensed user reading a work order fine and failing on save. It lands better than a table in a slide.
  • Before go-live, run solution checker over the shipped solutions and keep the output. It's a decent artefact to hand the client for their own compliance file.
  • Detail beyond the read/write rule — exact use rights per SKU — lives in the Dynamics 365 Licensing Guide. Say so rather than guessing.

Worth another look if Microsoft adds a Field Service Team Member app, or widens the self-service work order exception.

Was this accurate?