Configuring Time Entry Duration Controls in Dynamics 365 Project Operations

Project manager reviewing a timesheet approval dashboard showing a calendar grid of time entries

A project accounting lead doing month-end billing reconciliation pulls up a consultant’s timesheet and finds a single day logged at 26 hours. It is almost certainly a typo, someone meant to type 2.6 or fat-fingered an extra digit, but it has already been submitted, approved by a project manager who didn’t look closely, and is sitting in the queue for client invoicing. A few rows down, another resource has logged entries in odd fragments: 7 minutes here, 23 minutes there, none of which line up with the 15-minute billing increments the engagement’s rate card assumes. Neither error is malicious. Both are expensive to catch after the fact, and until this summer, Dynamics 365 Project Operations gave administrators no native way to stop either one at the point of entry.

That gap has started to close. Project Operations now ships two native time entry duration controls that reached general availability within about five weeks of each other in 2026: the ability to configure a maximum daily time entry duration (GA July 24, 2026, tracked in Microsoft 365 message center as MC1425968) and the ability to configure a minimum interval for time entry duration (GA August 31, 2026, MC1443022). Together they give Project Operations something it had previously left entirely to custom validation, whether that meant a Power Automate flow triggered on time entry creation, a plugin registered against the create and update messages, or, more commonly, nothing at all beyond a project manager’s attention during approval.

What the two controls actually do

The maximum daily duration setting lets an administrator define the ceiling on how many minutes a single resource can log across time entries for one calendar day. Per Microsoft’s own release messaging, the configuration is applied from the Parameters page, and it is evaluated every time a time entry is created or modified, not just at submission or approval. That timing detail matters more than it might first appear. It means a resource typing an obviously wrong duration gets an error immediately, in the same session, rather than discovering it later when a project manager rejects the entry or, worse, when it has already cleared approval and shown up on an invoice.

The minimum interval control addresses a different failure mode: durations that are technically valid but operationally useless. Once configured, Project Operations only allows time entries whose duration is a multiple of the value an administrator sets, for example 15 minutes or a full hour. A resource cannot log 22 minutes against a task if the organization has standardized on quarter-hour billing increments; the entry is rejected until it rounds to 15, 30, 45, or 60. Microsoft’s own framing for this feature is squarely about time-tracking policy compliance rather than data hygiene for its own sake, and the distinction is worth sitting with: this is not a cosmetic rounding feature, it is a control meant to make sure recorded time actually maps to how the organization bills or costs labor.

Abstract illustration of a clock face overlaid with a grid representing time entry duration increments

Neither setting appears to expose a granular default in Microsoft’s public documentation beyond the mechanism itself, but field configuration guidance published around the July rollout describes the daily maximum defaulting to a full 24-hour day, meaning 1,440 minutes, until an administrator tightens it. If that reporting holds in your tenant, the practical implication is that this feature does nothing on its own. It has to be explicitly configured to be useful, which is a detail worth confirming in a sandbox before assuming it is protecting anyone.

Rolling out the time entry duration controls without a mess

The temptation with either control is to set the value you actually want on day one: an 8 or 9-hour daily cap matching a standard workday, and a 15-minute increment matching your billing rate card. Resist that instinct for the first rollout cycle. Because validation runs on every create and modify, and because Project Operations time entry has several paths into the system beyond the standard weekly grid, including the Copy Week function, bulk import, and any canvas or model-driven app built against the time entry entity, a tight setting configured without a testing pass tends to surface every non-standard workflow your organization has quietly built up around timesheets.

A safer sequence starts with a maximum daily duration set deliberately loose, something like 16 or 18 hours, purely to catch the genuinely broken entries (the accidental 26-hour day, the decimal-point typo that becomes 240 hours) without touching resources who occasionally work a long day and log it honestly. Watch validation errors for a full billing cycle before tightening toward the actual policy limit. The minimum interval control deserves the same caution, but for a different reason: it will interact directly with any existing Power Automate flows, integrations, or import templates that write time entries with durations your organization never audited closely. An integration pulling hours from a separate scheduling or field service system, for instance, might write entries in whatever granularity that source system uses, and a newly enforced 15-minute increment will start rejecting them the moment it goes live. Map every system of record that writes into project time entries before you set this value, not after.

It is also worth coordinating both settings with how your organization has configured time zone behavior for the time entry grid. Project Operations lets teams choose between time zone aware date handling, where the same entry can display on different calendar dates depending on the viewer’s time zone, and time zone independent handling, which pins the date regardless of viewer location using a dedicated time zone independent date field. For a distributed delivery team spanning multiple time zones, a daily maximum duration check that is evaluated against a date that shifts depending on who is looking at it can produce validation behavior that looks inconsistent to end users, even though the underlying rule hasn’t changed. Confirm which time zone mode is active before assuming daily duration validation will behave the same way for every resource.

What these controls do not solve

Both features validate entries going forward. Neither one appears to retroactively flag or correct time entries that already exist in the system, so a backlog of historical bad data, the kind most organizations discover they have the first time they actually go looking, will not be swept up by turning either setting on. If a data cleanup is part of the motivation for adopting these controls, that remains a separate exercise, likely a Power Platform dataflow or a one-time script against existing records, not something the new parameters retroactively apply.

Equally, neither control replaces approval-stage review. A time entry that respects both the daily maximum and the minimum increment can still be entirely wrong: charged to the wrong project task, misclassified by type, or simply inaccurate about what work actually happened. Duration validation catches a narrow, specific class of error, the kind that shows up as an obviously implausible number or a fractional oddity, and it catches it earlier and more reliably than a human reviewer scanning a timesheet approval queue ever will. It is not a substitute for that review; it removes one category of noise so the review that remains can focus on judgment calls rather than arithmetic.

For organizations running Project Operations at scale, particularly those billing time-and-materials engagements where a single mis-keyed entry can mean a client invoice dispute, these two settings are a genuinely useful, low-effort addition to a governance model that most teams have historically had to build themselves. Getting the rollout sequencing right, testing against every system that writes time entries, and being honest about what the controls do not cover matters more than getting the exact numbers right on day one. Routeget Technologies has walked several Project Operations customers through exactly this kind of parameter rollout, and the pattern holds: the configuration itself takes minutes, and the discovery of what has been quietly writing non-compliant time entries into the system for years takes considerably longer.


#ProjectOperations #TimeEntryValidation #DynamicsFinanceOps #TimesheetGovernance #ERPDataQuality #PSAConfiguration

The Power Pages Security Model Is Changing. Your Table Permissions Still Need an Audit.

IT security professional reviewing an abstract portal permissions and access-control dashboard on a widescreen monitor

A CIO at a mid-size insurer found out about the problem during a routine vendor risk review, not from an internal alert. A claims-intake portal built two years earlier by a business analyst on the operations team, using Power Pages because it was faster than waiting for a developer sprint, had an Anonymous Users role configured with Global Access read permission on a table that included policyholder contact information. Nobody had touched the site’s permissions since launch. Nobody on the security team had reviewed it either, because it had never appeared on a list of applications anyone was tracking. That is the quiet risk of low-code external portals: they get built quickly, they work, and they slip out of the governance perimeter that would normally catch a misconfiguration like this one. It is also the backdrop against which every CIO should be reading Microsoft’s current overhaul of the Power Pages security model, because the two changes underway solve different halves of that same problem.

This is not a hypothetical. In late 2024, researchers at AppOmni disclosed that a large number of Power Pages sites across industries, including a UK National Health Service contractor, were exposing sensitive data because of exactly this pattern: table permissions granted at Global Access to the Anonymous Users or Authenticated Users role, on sites where self-registration meant “authenticated” effectively meant “anyone who signed up.” One case alone reportedly exposed contact information for more than a million people. Microsoft’s own documentation on table permissions has warned about this since Power Pages existed under its earlier name, but the setting is easy to get wrong and easy to forget about once a site is live.

Two Different Problems Wearing the Same Name

Microsoft’s response to date has taken two distinct forms, and it is worth CIOs and IT directors being precise about which one solves which problem, because the two get conflated in vendor briefings more often than they should.

The first is a genuine security tool: the Security Scan and Security Hub capability, which reached general availability in the back half of 2025. It scans a site’s configuration and flags the exact patterns AppOmni’s researchers were finding by hand, such as Anonymous or Authenticated roles with unusually broad table access. This is the tool that actually catches the problem described above, and if your organization has Power Pages sites in production and has not run this scan against every one of them, that is the first governance action to take this quarter, independent of anything else in this article.

Abstract close-up of a laptop screen showing a glowing network authorization diagram with role and permission nodes

The second is architectural, and it is easy to mistake for a security fix when it is really a plumbing change. Power Pages has always run two separate authorization systems side by side: Web Roles, which govern what a portal visitor can see and do on the site itself, and Dataverse Security Roles, which govern access to the underlying data. They were related but not unified, which meant a portal’s activity in Dataverse was historically attributed to a shared application user rather than the individual who was actually signed in, and administrators had to document, reason about, and troubleshoot two parallel permission models for the same site. Starting with a preview that shipped July 8, 2026 and targeted for general availability in November 2026, Microsoft is merging the two: each Power Pages user is now represented as both a Dataverse Contact and a Dataverse System User, and each Web Role maps directly to a corresponding Security Role. When a portal visitor calls Dataverse, the request now carries that visitor’s own identity rather than a generic service account.

What Changes in the Power Pages Security Model, and What Doesn’t

For a CIO evaluating whether this matters, the honest answer is that it is a governance quality-of-life improvement, not a vulnerability patch. The practical benefits are real but specific. Audit trails improve meaningfully, because actions taken through a portal now show up in Dataverse tied to the actual visitor rather than a shared identity, which matters for any organization that has to answer a compliance question like “who accessed this record and when.” Administrative overhead drops somewhat, because a security team no longer has to maintain a mental model of two loosely coupled permission systems and explain the seams between them to auditors or new hires. And because Microsoft describes this as a structural consolidation rather than a breaking change, existing sites are not expected to require a manual permissions migration when the rollout reaches them.

What it does not do is retroactively fix an Anonymous role that already has Global Access to a sensitive table, add column-level masking to a site that never configured it, or catch a wildcard entry in a site’s Web API field allowlist. Those are governance decisions, made by whoever configured table permissions when the site was built, and they persist through the unification exactly as they were. A cleaner, more auditable authorization backbone makes it easier to see a bad permission grant once someone goes looking for it. It does not go looking on its own.

What This Means for the Portal Sitting in Your Environment Right Now

If your organization has any Power Pages sites in production, three actions are worth taking before the November GA date, not because the unification itself is risky, but because it is a natural forcing function to finally do the review that should have happened at launch.

Start with an inventory question that is more often skipped than answered: does IT actually have a current list of every Power Pages site running in the tenant, who built it, and what data it touches? Citizen-developer tools succeed precisely because they let business teams build without waiting on IT, which also means those teams do not always think to tell IT what they built. A Power Platform Center of Excellence setup, or even a simple quarterly export from the admin center, closes this gap cheaply.

From there, run the Security Scan against every site on that list and treat any Global Access finding on the Anonymous or Authenticated role as a same-week fix, not a backlog item. Pair that with a manual check the automated scan will not catch on its own: whether column-level security profiles are configured on any table that includes personally identifiable information, since AppOmni’s testing found this control essentially unused across every site they reviewed, scanned or not.

Finally, treat the unification’s traceability improvement as an opportunity rather than a compliance checkbox. Once portal actions in Dataverse are attributed to individual users instead of a shared application identity, that data becomes genuinely useful for security operations and for internal audit, but only if someone owns pulling and reviewing it. Assign that ownership now, while the change is still new, rather than assuming a dashboard will surface it automatically.

We have run this exact audit sequence, security scan first, then a manual table-permission and column-security review, for several clients ahead of their own Power Pages authorization changes this year, and the pattern holds every time: the sites that fail are the ones nobody had looked at since the day they launched. A consolidated security model makes that oversight easier to catch. It does not make it disappear on its own, and the organizations that treat the two as the same thing are the ones that will still be explaining an exposure to their board next year.


#PowerPages #PowerPlatformGovernance #DataverseSecurity #CitizenDevelopment #DataProtection #DigitalTransformation

Dynamics 365’s Tax Data Migration Tool: What Actually Gets Automated

Enterprise IT consultant reviewing tax configuration data on a monitor, representing Dynamics 365 tax data migration review

A solution architect I’ll call by his actual role, not his name, spent three weeks last spring rebuilding tax configuration for a distributor operating across six US states and two Canadian provinces. The client had outgrown the standard sales tax engine years earlier but never had a project sponsor willing to fund the rework. Every tax code, every group, every item tax group had to be re-created by hand in the newer Tax Calculation service, cross-checked against the original ledger parameters, and validated transaction by transaction. It was the kind of work nobody budgets enough time for, because on paper it looks like data entry, and it is exactly the work Microsoft’s new Tax Data Migration capability is now trying to automate.

That is the exact problem Microsoft is now trying to solve with a preview capability inside Globalization Studio called Tax Data Migration. Rather than asking implementers to rebuild tax master data from scratch, the tool reads a legal entity’s existing standard sales tax setup and generates a working Tax Calculation feature version automatically. It will not replace the judgment a migration still requires, but it does remove a meaningful share of the mechanical rebuilding that used to eat the first few weeks of every one of these projects.

What Tax Data Migration actually converts

The migration reads four categories of standard sales tax master data and maps each into its Tax Calculation equivalent. Sales tax codes become tax codes. Sales tax groups become tax groups. Item sales tax groups become item tax groups. And critically, the general ledger parameters that used to control cash discount and cash discount timing behavior get converted into tax jurisdiction parameters, since Tax Calculation manages that logic at the jurisdiction level rather than the ledger level.

The origin field on each tax code also gets translated rather than copied verbatim. A tax code set to calculate as a percentage of the gross amount becomes “By Gross Amount” in the new model; percentage of margin becomes “By Margin”; amount per unit becomes “By Quantity,” and so on through the six origin types the legacy engine supports. None of this is exposed as a simple lookup table in the product; it is worth documenting for your own project file before you run the migration, because a few of the mappings (particularly “percentage of sales tax” becoming “tax on tax”) are not intuitive if you have not seen the conversion logic before.

Abstract visualization of tax data migrating from one table structure to another in Dynamics 365 Finance

Where the automation gets genuinely clever, and where it gets messy

The part of this feature that will actually save implementation time is variant handling. In real tax configurations, the same tax code frequently shows up in multiple sales tax groups with different behavior attached, one group where it is marked exempt, another where use tax applies. The standard engine tolerates this because the group, not the code, carries the override. Tax Calculation does not work that way, so the migration tool automatically splits a conflicting code into variants: the original code keeps its name, and each subsequent variant gets a numeric suffix appended.

This is also where technical teams need to slow down before trusting the output. The suffix assignment order is explicitly documented as nondeterministic, meaning you cannot predict in advance whether a given tax group ends up with the base code or the _1 variant, and if the original code name is already at Tax Calculation’s ten-character limit, the tool truncates the base name to make room for the suffix. A code your team recognizes on sight can come out the other side looking different enough that a quick visual check will not catch a misassignment. Budget time to open every variant and confirm which tax group it landed in rather than assuming the naming is self-explanatory.

There is a harder stop worth planning around too. If the combined character length of the tax codes attached to a single tax group, or a single item tax group, exceeds 1,000 characters, the migration cancels outright with an error rather than producing a partial result. For a tax group used across many countries or with dozens of narrow tax codes attached, this is not a hypothetical edge case; it is the kind of limit that shows up on the first attempt for exactly the complex, multi-jurisdiction entities where the automation would otherwise save the most time. If you hit it, the fix is manual: trim the tax group before running the migration again, which somewhat defeats the point of automating the exercise for that entity.

The cash discount conflict nobody should skip

One behavior deserves specific attention because it fails silently in the sense that matters: the process still completes successfully even when it can’t fully reconcile a setting. If a tax group’s cash discount treatment differs from the general ledger default, the tool completes the migration and simply throws a warning naming the affected groups, leaving it to the implementer to go build the correct tax jurisdiction rule by hand afterward. It is easy to read a green completion status, skim past a warning banner, and move on to validation testing, especially on a project where the migration ran late in a sprint. Treat any cash discount warning as a required follow-up task, not an FYI, and reference Microsoft’s tax jurisdiction cash discount setup documentation directly rather than guessing at the intended rule from the original ledger parameter alone.

Scope limits that shape how you plan the work

Three constraints matter more for project planning than for the mechanics of any single run. First, the migration operates on one legal entity at a time, scoped to whichever entity is currently selected, so a multi-entity F&O implementation still needs a migration pass per entity rather than a single global conversion. Second, there is no incremental sync: if tax master data changes after you generate a feature version, those changes are not reflected automatically, and picking them up means creating a new version or rerunning the migration from the current state rather than patching the existing one. That makes sequencing important. Run the migration once your legacy tax setup is genuinely stable, not while a parallel project is still adjusting sales tax groups. Third, Brazil and India are explicitly excluded from the feature, which will matter for any global rollout that includes those entities; plan on manual configuration there regardless of how well the automation performs elsewhere.

Where this leaves an implementation plan

None of this changes the fundamental decision of whether to move to Tax Calculation, and it should not be read as a shortcut around understanding how applicability matrices, registration number rules, and jurisdiction-level parameters actually work in the target state. What it does change is where a project’s early hours go. Instead of spending the first several weeks re-keying tax codes and groups that already exist somewhere in the standard engine, a team can generate a starting configuration in an afternoon and spend the time it saved on the work that actually requires expertise: validating applicability logic, building jurisdiction rules for the edge cases the tool flags, and testing real transactions against the converted setup before it goes anywhere near production. The feature is still in preview with no announced general availability date, and Microsoft’s own documentation is explicit that preview functionality isn’t intended for production use, so the responsible move right now is to run it in a sandbox, learn where your specific tax configuration triggers variants or warnings, and have that homework done before GA arrives rather than starting from zero once it does.

We’ve run this migration path on sandbox copies of a few clients’ production tax configurations at Routeget specifically to build a checklist of the mapping quirks and character-limit failures worth watching for, and the pattern holds across fairly different configurations: the tool gets you most of the way to a working feature version, and the remaining ten percent is exactly the part that requires someone who understands both the old engine and the new one.


#TaxDataMigration #TaxCalculationService #GlobalizationStudio #DynamicsFinanceOps #ERPTaxCompliance #FinanceTransformation

Dynamics 365 Project Operations Adds a Fix for Cash Advance Exchange Rate Variance

Finance controller reviewing a multi-currency expense reconciliation dashboard in a modern office

A controller at a global engineering firm closes out Q2 and finds forty-one employee vendor accounts sitting at small nonzero balances, a few cents here, a few dollars there, all tied to cash advances issued in one currency and expensed in another. None of it is fraud. None of it is even really an error. It is simply what happens when a consultant draws a 500 EUR travel advance in Frankfurt, spends it against invoices priced in EUR three weeks later, and the accounting system converts both legs to USD using two different exchange rates. That gap is cash advance exchange rate variance, and for years in Dynamics 365 Project Operations, closing it has meant a manual journal entry, a write-off, or a permanently open subledger line that audit eventually asks about.

For finance leaders running project-based businesses across borders, that is not a rounding error problem. It is a data quality problem that quietly distorts two things CFOs actually rely on: the accuracy of project margin reporting and the integrity of the month-end close. When exchange rate noise gets buried inside project cost lines instead of isolated as a currency gain or loss, a project that is performing exactly to budget can appear to be overrunning, or vice versa, purely because of when and where an employee happened to spend an advance.

Finance controller reviewing a multi-currency expense reconciliation dashboard in a modern office

Why This Has Been Hard to Fix Cleanly

The mechanics explain why this has persisted. A cash advance in Project Operations is tracked in the currency it was requested in, and the system has long supported reducing that advance automatically as expense reports are submitted against it. That part works fine when the advance and the expense are denominated in the same currency and settled close together. The trouble starts when they are not: an advance drawn in EUR against expenses ultimately reported in a mix of currencies, or an advance settled weeks or months after it was issued, during which the exchange rate has moved. Historically, the system had no dedicated mechanism to isolate that movement as its own transaction. The employee’s vendor account either carried a residual balance indefinitely or someone in accounts payable manually calculated and posted the variance by hand, entity by entity, advance by advance.

For a firm with a handful of international projects, that manual step is an annoyance. For one running hundreds of consultants across a dozen currencies, it becomes a recurring close-cycle task that scales with headcount and travel volume, and it is exactly the kind of manual, judgment-based adjustment that internal and external auditors tend to flag when they see it repeated month after month.

Close-up of an international business traveler's desk with foreign currency, receipts, and a laptop showing an expense dashboard

How the New Cash Advance Exchange Rate Variance Fix Works

Microsoft’s cash advance exchange rate adjustment capability, released to public preview on July 31, 2026, is built specifically to close this gap. Rather than settling a cash advance purely against accounting currency, the feature bases settlement on transaction currency and automatically detects, calculates, and posts the resulting realized foreign exchange gain or loss. The stated design goal is straightforward: an employee’s vendor account should net to zero once a cash advance is fully settled, with any currency movement broken out as its own recognized amount rather than absorbed silently into the balance.

A simple illustration makes the mechanism concrete. An employee draws a cash advance of 100 EUR, recorded at 140 USD under the exchange rate in effect that day. Three weeks later, the employee submits an expense report for the same 100 EUR, but the rate has moved and the accounting equivalent is now 150 USD. Under the new capability, the system recognizes a 10 USD realized foreign exchange gain, posts it to the configured FX gain account, and closes the vendor balance out to zero. No residual line, no manual calculation, and critically, no distortion of the project’s actual cost lines, since the currency movement is captured separately rather than folded into expense cost.

The feature also builds in the kind of traceability that finance and audit teams specifically ask for during control reviews. Each adjustment carries navigation back through related vouchers, from the original cash advance to the expense report that triggered settlement to the specific FX variance transaction, so a reviewer can trace the full chain rather than reconstructing it from disconnected general ledger entries.

What This Actually Changes for Finance Leaders

The practical benefit is less about the accounting mechanics themselves and more about what they stop contaminating. Once currency variance on cash advances is automatically isolated, project profitability reporting gets meaningfully cleaner, because cost lines reflect actual project spend rather than a blend of spend and unrelated exchange rate movement. That matters more than it sounds, particularly for firms that price fixed-fee international engagements and rely on margin data to make staffing and pricing decisions on the next similar project. A margin figure that has been quietly absorbing FX noise for two years is not a small reporting inconvenience; it is a data integrity problem sitting underneath real business decisions.

There is also a straightforward labor and close-cycle argument. Every manual FX variance calculation that a firm’s shared services or accounts payable team performs by hand is time that does not scale, and it is exactly the category of adjustment most likely to be done inconsistently across regions or entities when it is left to individual judgment rather than a system-enforced rule. Automating it does not just save hours, it removes a source of inconsistency between how one controller in one country handles a variance and how another controller in a different entity handles the same situation.

Rollout Considerations Before Enabling It

This is a preview capability as of this writing, which carries the usual caveat that behavior may still change before general availability, and CFOs evaluating it should treat that as a real constraint on timing rather than a formality. Two prerequisites matter before the feature can even be turned on: the “mapping cash advances to expense lines” capability must already be enabled in the environment, and there can be no partially mapped cash advances outstanding at the time the new feature is activated. That second condition is not trivial for an organization with a large volume of open advances; it effectively requires a cleanup pass through existing cash advance records before flipping the switch, which is worth scoping as its own short project rather than assuming it happens automatically. The feature also requires a minimum platform version, Dynamics 365 Finance release 10.0.49 or later, so version currency is a gating question worth confirming with IT before this goes anywhere near a finance steering committee agenda.

There is a policy conversation worth having alongside the technical rollout, too. Realized FX gains and losses need to land in accounts that align with how corporate accounting already classifies currency movement elsewhere in the business, and treasury or corporate accounting should confirm that mapping rather than leaving it to whichever team configures the feature. For organizations operating under both GAAP and IFRS reporting in different entities, it is worth a direct conversation about whether the automated posting behavior matches existing policy for realized versus unrealized FX treatment before this runs against live cash advances rather than after.

The sensible sequencing looks like a pilot in one entity with meaningful cross-currency travel volume, ideally one that has visibly struggled with recurring FX write-offs, run in parallel with the existing manual process for a full close cycle before cutting over more broadly. That gives finance leadership a real before-and-after comparison rather than a leap of faith, and it surfaces any gaps in how the automated posting interacts with an organization’s specific chart of accounts before the feature is relied upon across every entity at once. Firms that have worked with implementation partners such as Routeget Technologies on other finance automation rollouts tend to find the same pattern holds here: the capability itself is straightforward, but the sequencing around data cleanup, policy alignment, and a genuine pilot period is what determines whether it lands as a quiet improvement or a source of new reconciliation headaches six months from now.

Currency variance on cash advances was never a large dollar figure on its own. Its real cost has always been the noise it introduces into numbers that finance leaders use to make decisions, and the manual effort spent chasing it down every close. Closing that gap cleanly is a small technical change with an outsized effect on how much confidence a CFO can place in project-level financial data.


#ProjectOperations #CashAdvanceReconciliation #ExchangeRateVariance #ExpenseManagement #ProjectAccounting #FinanceTransformation

Business Central 1099 Thresholds Didn’t All Move Together in 2026

Finance controller reviewing a tax compliance and vendor payments dashboard on a wall-mounted monitor in a modern office

A controller closing out Q3 payables in Dynamics 365 Business Central recently found herself staring at a vendor card for a landlord who’d been paid $1,400 in rent through September. Under the threshold she believed applied for 2026, that vendor wouldn’t need a 1099-MISC at all. She was wrong about that specific case (rent does cross the new reporting line), but the mistake that actually worried her had happened two months earlier, when she updated every box minimum in the company’s Vendor Box Setup to a single new number because that was the figure everyone in her network was repeating. Attorney gross proceeds and royalty payments to a handful of consultants quietly stopped generating 1099s the moment she made that change, because neither of those categories moved.

That’s the problem with updating Business Central 1099 thresholds for 2026: the increase is real and significant, but it applies to almost none of Form 1099-MISC uniformly. For a finance team running Business Central, the risk isn’t that they’ll miss the change entirely. Microsoft’s own release notes and every ERP consulting blog covered it. The risk is that they’ll apply it correctly to the one box everyone talks about and incorrectly to the six or seven boxes nobody mentions, inside a system that makes it just as easy to set a wrong minimum as a right one.

Finance controller reviewing a tax compliance and vendor payments dashboard on a wall-mounted monitor in a modern office

What actually changed for tax year 2026

For payments made on or after January 1, 2026, the reporting threshold for Form 1099-NEC nonemployee compensation, and for several categories on Form 1099-MISC, rises from $600 to $2,000. That covers rents, prizes and awards, other income, medical and health care payments, crop insurance proceeds, section 409A deferrals, and nonqualified deferred compensation. It does not cover royalties or broker payments in lieu of dividends and interest, which stay at a $10 minimum, and it does not cover gross proceeds paid to attorneys or purchases of fish for resale, which stay at $600. Interest, dividend, and retirement distribution reporting on Forms 1099-INT, 1099-DIV, and 1099-R sit outside this change entirely, still governed by their own long-standing $10 minimums. Starting in 2027, the $2,000 figure is subject to inflation adjustment, which means the number itself won’t stay fixed even for the categories it does apply to.

One rule that didn’t move at all: any business filing ten or more aggregate information returns across all form types in a calendar year is still required to file electronically rather than on paper. That threshold, which has applied since the aggregation rule took effect for returns filed in 2024, catches most Business Central customers well before they’d ever consider paper filing as an option, which makes the electronic filing path the default rather than a special case.

Business Central 1099 thresholds live box by box, and nothing warns you they differ

Business Central’s current 1099 architecture, rebuilt in the 27.2 release toward the end of 2025, replaced the older preprinted-forms workflow with a set of purpose-built pages: IRS Forms Setup for email templates, IRIS credentials, and TIN protection controls; IRS Reporting Periods for managing each year’s cycle, with a copy-forward action to bring last year’s configuration into the new period; Vendor Box Setup for mapping each vendor to the specific 1099 form and box their payments belong in; and a Form Documents page for generating, reviewing, and transmitting the actual forms.

Accounts payable specialist at a dual-monitor workstation reviewing a vendor tax form configuration screen with a numeric threshold table

The box minimum lives at the box level by design, which is exactly right in principle. The trouble shows up in practice, because nothing in that setup screen warns a controller that the value they’re about to paste into every row isn’t the same value for every row. A company that runs an “Update Form Boxes” pass once a year, changes the number that made the news, and moves on will end up with 1099s that look complete and are quietly wrong. Under-reporting a required form doesn’t just create IRS exposure; it creates a vendor relations problem when that vendor’s own accountant asks where their form went, and a documentation problem when an auditor asks why the threshold on file doesn’t match what’s printed in the IRS’s own instructions for that box.

What native filing now covers, and where it still stops

The bigger structural change in Business Central’s 1099 handling isn’t the threshold at all. It’s that the platform can now submit forms directly to the IRS’s Information Returns Intake System, IRIS, through an API integration that reached general availability on November 1, 2025, for Business Central Online. Forms transmit without a manual export and re-import step, and an IRIS Transmission page tracks status so finance doesn’t have to guess whether a batch went through. Copy B, the version vendors receive, prints or emails as a plain-paper substitute rather than requiring the preprinted stock that year-end close teams used to scramble to order.

That’s a meaningful reduction in the case for a third-party 1099 add-on, but it isn’t a full replacement for one, and it’s worth being specific about why. As of the current release, Business Central’s Form Documents page has no option to print or email every vendor’s form in a single action; each one has to be handled individually, though Microsoft has flagged bulk printing and emailing as coming in a near-term update. TIN matching against IRS records isn’t part of the native workflow, so a company that wants pre-filing verification that a vendor’s name and taxpayer ID actually match still needs to run that check somewhere else. State filing is out of scope too: IRIS handles federal transmission, and any state that doesn’t participate in the Combined Federal/State Filing Program still needs its own submission, which is exactly the kind of gap that standalone 1099 compliance apps in the Business Central ecosystem were built to close and continue to be relevant for. Correction and amendment handling after an original form has already transmitted is also thinner in the native tool than in most dedicated filing services, which matters more than it sounds like it should, since threshold-driven errors are precisely the kind of mistake that generates corrections.

What this means for the close calendar, not just the tax calendar

None of this is a reason to delay adopting the native IRIS integration. Eliminating the preprinted-forms supply chain and the manual transmission step is a genuine operational win, and most finance teams should move onto it as their filing method regardless of what else they use alongside it. The point is narrower: the threshold change is a forcing function to actually open Vendor Box Setup and check every box against the IRS’s own 2026 instructions, line by line, rather than trusting whatever number was last typed in.

Finance and compliance team reviewing a year-end tax compliance checklist and reconciliation chart in a meeting room

That review belongs on the calendar before the fourth quarter closes, not in the scramble between January 1 and the filing deadline. It’s worth having someone outside of accounts payable, ideally whoever owns tax compliance or the external CPA relationship, sign off on the box configuration once it’s set, since the people most likely to hear about the threshold change first are the ones least likely to know which of the seven or eight affected categories it actually touches. If the organization already licenses a third-party 1099 or AP compliance app for TIN verification, bulk processing, or state filing, this is also the moment to confirm that app’s own 2026 configuration has been updated to match, rather than assuming it inherited the change automatically from Business Central.

Routeget has walked several clients through exactly this kind of box-by-box reconciliation ahead of a release change, and the pattern holds regardless of company size: the failure mode is never a controller who ignores a well-publicized rule change. It’s a controller who applies it correctly to the one number that made headlines and never checks the six that didn’t.


#BusinessCentral #1099Thresholds #VendorBoxSetup #IRISFiling #YearEndClose #TaxCompliance

Closing the Direct Inward Dial Overflow Gap in Dynamics 365 Contact Center

Contact center operations manager reviewing a call routing and queue visualization dashboard in a modern control room

A contact center administrator spends a sprint tuning overflow rules for the sales voice queue: wait-time thresholds calibrated against real call volume, a callback offer instead of a hold queue during lunch-hour spikes, a fallback voicemail script that does not sound like an apology. Test calls placed through the published support number behave exactly as configured. Then a prospect who picked up a business card at a trade show dials a sales representative’s direct number after hours. The phone rings four times and drops into a generic voicemail greeting nobody has touched since the line was provisioned, because nothing in the Contact Center overflow configuration ever saw that call. It never passed through a queue at all.

This is the direct inward dial overflow problem, and it shows up in more Dynamics 365 Customer Engagement implementations than most solution architects expect. Configuring overflow on a voice queue protects the calls that arrive through that queue. It does nothing for a call that lands on an individual representative’s assigned number, which is a distinct and fairly ordinary path into the organization that unified routing was never built to see.

Why Overflow Rules Never See These Calls

Unified routing’s overflow handling evaluates work items at two points. Before a call or conversation is queued, the system checks whether the queue is outside operating hours, whether it already holds more open items than a configured limit, and, for voice specifically, whether the predicted wait time exceeds a threshold set anywhere from thirty seconds to sixty minutes. After a work item has been queued, a second check tracks how long it has actually waited, from one minute up to two days depending on channel, and applies whatever action an administrator attached: transfer to a different queue, a callback offer, voicemail, or an external number.

All of that logic runs against work items that entered the routing pipeline through a workstream’s route-to-queue rules. A direct inward dial call to a representative’s personal number never enters that pipeline. It rings the representative’s device the way any phone call would, which is precisely the convenience the number is meant to offer, and it means the overflow conditions above are never evaluated because there is no queued work item to evaluate. Whatever happens when the call goes unanswered is whatever the telephony carrier or device does by default, not anything Dynamics 365 governs. This is not the only blind spot of its kind: work items that land in a fallback queue because of a classification error or an unmatched routing rule bypass overflow handling too, for the same reason. Overflow protection only applies to the specific path it was designed to watch.

Configuring Direct Inward Dial Overflow with Conversation Orchestration

Conversation Orchestration, still in preview as of this writing, is the first native mechanism that gives administrators a way to close this gap rather than work around it with a separate telephony configuration. It replaces the traditional condition-action rule editor with playbooks authored in guided natural language, which a language model then converts into a structured runtime policy. Each playbook has four parts: the queues it applies to, the trigger event that starts evaluation, up to ten conditions built from context variables such as customer tier or account type, and the action taken when those conditions are met.

Among the available triggers is one built specifically for this scenario: a direct inward dialed call received, paired with a condition checking whether a representative is actually available. When that condition is met, the playbook can route the call to voicemail, transfer it to an alternative queue, or redirect it into a callback queue instead of leaving it to ring out. It is the same category of protection unified routing has offered queued calls for years, finally applied to a path that queue-based overflow rules cannot structurally reach.

Before building a playbook, a few prerequisites need to be in place: unified routing enabled, at least one queue and voice or messaging workstream already configured, an active channel, and a System Administrator or Omnichannel Administrator doing the configuration. Organizations on a pay-as-you-go plan also need an Azure subscription with consumption billing set up, since orchestration is metered separately from standard licensing.

Building the Playbook: A Concrete Example

Solution architect at a dual-monitor workstation reviewing an abstract call-routing logic diagram

Consider an enterprise sales team where several senior representatives have published direct numbers on their email signatures and LinkedIn profiles. The architect’s goal is not to eliminate direct dialing, which the team values precisely because it skips the queue, but to make sure a missed call does not simply vanish. The playbook scopes itself to the queues associated with those representatives, sets the trigger to a direct inward dialed call received, and adds a condition for representative availability. From there the logic branches: an account flagged as top-tier gets transferred live into a staffed key-accounts queue rather than dropped to voicemail, while every other caller gets a voicemail action paired with a script that points to the published support line and a realistic callback window, so the prospect from the trade show has somewhere else to go immediately.

Publishing enforces a few constraints worth planning around. Only one active playbook can cover a given queue and scenario at a time, so a second attempt to publish a conflicting DID overflow policy for the same queue fails with an explicit error rather than silently overriding the first. A draft playbook is fully editable, but once active, changes require a full save-and-publish cycle rather than a quiet in-place edit, a reasonable guardrail against someone adjusting live call-handling behavior without realizing it took effect immediately.

What Breaks in Practice, and How to Test For It

The natural-language authoring model is convenient, but Microsoft’s own documentation is candid that the conversion from plain-language intent to runtime logic will not always capture what the administrator meant, and that deviations only surface once the policy is running against real conversations. That makes a habit of placing genuine test calls after every publish, not just re-reading the playbook description, a non-negotiable part of the rollout rather than an optional nicety. A policy that reads correctly in the authoring pane can still behave differently once it is evaluating live availability data.

Playbooks are also event-driven rather than evaluated once, which changes how architects should think about multiple active policies on the same queue. A dynamic-prioritization playbook and a DID overflow playbook can both run simultaneously, firing independently as different conditions become true over the life of a single call, so priority might escalate at the thirty-second mark from one policy while an overflow action triggers five seconds later from a second policy reacting to every representative signing out. Treating these as a single ruleset, the way legacy overflow configuration works, produces confusing results; they need to be tested as independent, potentially overlapping processes.

Migration between environments deserves its own checklist. Playbooks move through standard Power Platform solution export and import, using the underlying prompt table, but only cleanly if every queue, context variable, and dependent component they reference already exists in the destination environment first. Importing a playbook ahead of its dependencies does not fail cleanly; it leaves broken references that surface later as orchestration silently not firing, a far more frustrating way to discover a missing prerequisite than an outright import error.

One more consideration belongs on the pre-production checklist rather than after go-live: because this feature touches individual representatives’ direct lines and depends on monitoring their real-time availability, Microsoft’s guidance is explicit that organizations must notify representatives their communications may be monitored, secure customer consent where required, and never use the orchestration data to inform employment decisions such as compensation or performance reviews. That is a legal and HR conversation, not just a configuration one, and it belongs before go-live rather than after someone asks what the availability data is being used for.

It is worth setting this next to its closest sibling: automatic handling of waiting conversations when a queue closes or becomes unstaffed, which reached general availability in mid-2026 as a standard queue capability rather than a preview playbook. Between the two, most deployments can now cover both halves of the same failure mode, a customer left with no available representative, one through native queue configuration and the other through a playbook that still carries preview caveats.

Where This Leaves Contact Center Architects

None of this makes Conversation Orchestration as production-hardened as a decade-old queue overflow rule set, and Microsoft is not claiming otherwise. What it does confirm is that the direct inward dial gap is real, it predates this feature by years, and most Contact Center deployments have never actually been audited against it. A reasonable next step does not require waiting for general availability. It requires pulling a list of every representative with a published or easily discoverable direct number and asking a blunt question: what actually happens on that line right now if nobody answers. For a lot of organizations, the honest answer is nothing configured, nothing tested, and nothing anyone would want a customer to experience. Routeget’s customer engagement practice has walked several active Contact Center rollouts through exactly this kind of gap analysis, and the pattern holds regardless of company size: the queues get the attention during implementation, and the direct lines get forgotten until a customer falls through one.


#ContactCenter #UnifiedRouting #ConversationOrchestration #DirectInwardDial #OmnichannelCX #DynamicsCustomerService