Their D365 Finance & Supply Chain security was among the best-configured we've assessed. It was still costing them $40,000 a month more than it needed to.

The client is a European organization running D365 F&SC for a little over 700 users, at a monthly licensing cost of about $105,000. For an estate of that size, this isn't an expensive configuration on its face. Nothing about the number suggests waste. The security review that followed found $40,000 a month of it anyway, a 35% cut, without anyone losing access they actually used.

A clean estate, and a natural question

When we started digging into the license requirements, the picture only got tidier. Roughly 40% of the total spend was concentrated in just a couple of roles, and both of those roles legitimately required their licenses: one SKU per role, no ambiguity. Only a handful of roles in the entire configuration demanded multiple licenses at all.

Bar showing 40% of the $105,000 monthly license cost concentrated in two legitimately single-SKU roles, versus 60% spread across all other roles.
The spend is concentrated, and the concentration is legitimate. There's no obvious villain in this configuration.

This was, in almost every respect, the opposite of the integration-heavy environment we describe in our companion case study: a clean, tight, thoughtfully developed security model. Which raises the natural question. When everything looks well organized from the first glance, what's left to do?

The answer is our usual line of inquiry, just applied with more patience. Roles with multiple license requirements still exist here, so we still ask: what happens if we split those roles by license? Can we find users who hold a multi-license role but don't need every SKU inside it? Will telemetry show that some users never touch one of the licenses their role demands?

Those questions come later. The first pass is always about anomalies, the things that shouldn't be there. This client made that pass easier than most: with few integrations and users genuinely working inside F&SC rather than through external applications, behavior could be observed directly instead of inferred.

Ninety users who weren't there

Of the roughly 700 licensed users, almost 90 showed no activity in the previous 120 days. Those users are the first candidates for license reduction, access reduction, and cost reduction, and each one deserves an individual review by the client to determine whether the access is still required.

Decision flow: 700 licensed users narrows to 90 with no activity in 120 days, then splits into two paths, remove access, or view-only role plus Team Members license.
The dormant-user decision. Removal is one option; a cheap holding pattern is often the better one.

For users who have gone dormant but may plausibly return, our recommendation is a middle path rather than a hard removal: create a view-only role, assign it, and move the user to a Team Members license, inexpensive, in the region of $8 a month. The user keeps the ability to see information in F&SC, and if they eventually resume working in the system, access can be restored gradually, layer by layer, as their actual needs become visible.

The underlying logic is simple. If someone hasn't touched F&SC in months, that's a strong indicator they probably don't need full access. Some of these dormant users hold one, two, three, in one case even four licenses. Those assignments are worth reconsidering on their own.

System administrators doing business work

We also identified quite a few users holding system administration alongside genuine business roles. Not service roles, not a data management administrator or a similar technical assignment, but real operational roles, held by people who also carry full system administration.

Each of these assignments needs an explanation. Was system administration granted accidentally? Was it assigned temporarily to complete some task and never revoked? Or is this genuinely a system administrator who is also expected to operate in the business?

Microsoft isn't chasing this pattern yet. But the principle stands on its own: system administrators should administrate, not operate. It's easy to imagine Microsoft eventually tracking administrators holding business roles, precisely to enforce that separation. Either way, this finding goes to the client for review and validation. Only they can say what each assignment was meant to be.

The hidden discrepancy: paying full price for access nobody can use

The finding that generated real savings involves about ten roles carrying a permission discrepancy, a pattern that's common, consequential, and almost invisible to a security administrator unless they go looking for it.

In these roles, the lower-level permissions, Read, Update, Create, Delete, were unset or denied, while an upper-level permission such as Correct was granted. That combination is functionally useless. You can't delete something you can't see; you can't correct what you have no permission to display. Without the lower-level grants on the displaying items, actionable items, and open items, the higher-level permissions simply can't be exercised. It's a basic rule of security configuration.

Permission hierarchy diagram: Correct is granted while Delete, Create, Update, and Read are unset or denied, so Microsoft bills a full license while the user can do nothing.
The license engine and the user see two different systems. Only one of them gets an invoice.

But the license engine doesn't care about usability. The Correct permission is the expensive one, and its mere presence drives a full license requirement. So the client was paying for full licenses against access that was never actually available to anyone, across ten roles. Fixing this is pure, uncontroversial saving, and it was one of the largest saving points in the engagement.

We also found one privilege with mixed license requirements, assigned to four roles. Mixed-license privileges snowball: the multiple requirement rolls up from the privilege to the duty, to the role, to the user. Here the blast radius was small, a single privilege, but correcting it still contributed to the total.

What telemetry showed

Then we turned to usage, and the telemetry told us something that was, in its own way, a compliment to the client.

In many environments, telemetry exposes configuration that's barely alive: a privilege where one person touched one item, once, in a blue moon. Not here. In this environment, what had been configured was genuinely and widely used, further evidence of how carefully the security had been built.

Bar chart showing monthly license cost dropping from $105,000 before remediation to $65,000 after, a $40,000 reduction and 35 to 37 percent saving.
Inactive-user cleanup plus utilization analysis, in a configuration that already looked correct.

And yet, even so, the combination of inactive-user cleanup and straightforward utilization analysis, simply looking at what people actually do, yielded savings of roughly 35 to 37%, taking the monthly cost from $105,000 down to approximately $65,000. Fewer licenses required, less access granted, cleaner roles.

Everything we found, in one place

FindingImpactWhat it means
~90 dormant users High No activity in 120 days. Individual review, then removal or a view-only Team Members license.
10 roles with permission discrepancies High Correct granted, lower levels denied. Unusable access, billed at full license.
Utilization gap High Even a well-used configuration still carried access nobody exercised.
Sysadmins holding business roles Governance Not billed today, but administrators should administrate, not operate.
1 mixed-license privilege Low Assigned to four roles. Contained, but still rolls up to the user.
SoD violations in ~12 roles Critical Read-only finance role is the worst offender. Mitigate or rebuild.

A different optimization problem: classification, not clustering

It's worth pausing on the framing, because it differs sharply from the integration-heavy case in our companion write-up.

In that engagement, the role structure had to be discovered from user behavior, an unsupervised problem. Here, the target structure is known in advance. We define the classes up front: roles scoped to secure one specific thing, one role, one SKU. The task is then to determine which users should be assigned to which class. That's a classification problem. We aren't inventing the categories, we're assigning members to categories we've already defined.

Side-by-side comparison: the previous case study required discovering role clusters from scattered user behavior, while this case study has known target classes (Finance, Supply Chain, Commerce) that users are assigned into directly.
The same practice, two different problems. Which one you get depends on how well the security was built in the first place.

The distinction is more than academic. Classification against a known target is fundamentally more tractable than deriving a role structure from scratch, and it's only available when the existing security design is sound enough to be trusted as a starting point. This client's tidy configuration earned them a materially easier remediation, and the 35% anyway.

The second question: segregation of duties

As a European organization, the client raised an additional requirement: segregation of duties.

The conceptual model is well established. Certain duties, or certain tasks within a duty, create a control violation when the same person can perform both. The conflict can arise within a single role, where two conflicting duties or tasks are bundled together, or at the user level, where two individually acceptable roles combine on one person to produce the same violation.

Two diagrams: a segregation-of-duties conflict hiding inside a single role between two tasks, and a conflict that only emerges when two individually acceptable roles land on the same user.
A violation can hide inside one role, or emerge only when two innocent roles land on the same person.

We built the rule set, ran the analysis against their configuration, and presented the results: critical and high-risk violations across roughly a dozen roles, each of which will be addressed.

The role nobody audits

The most interesting finding is one we encounter almost everywhere: the role with the most violations was the read-only role.

Bar chart of segregation-of-duties violations by role, with the read-only finance role at 23 violations, the highest of any role, ahead of AP clerk, inventory manager, procurement, GL accountant, warehouse lead, and sales rep.
Illustrative distribution. The read-only role carried more violations than any other role in the system.

The read-only role is almost never actually read-only. It requires a license, and more often than it should, it grants far more than read access. Nearly every company builds one. In this environment the read-only role is a finance role, touching financial transactions, and it carried more segregation-of-duties violations than any other role in the system. If there's one universal takeaway here, it's this: audit your read-only role. It's the role nobody scrutinizes, precisely because its name promises there's nothing to scrutinize.

Two paths out of a violation

For each violating role there are two legitimate paths, and the choice belongs entirely to the client.

Two remediation paths for a violating role: mitigate with approval workflows, risk reports, and alerts, or rebuild by dropping offending permissions, re-scoping, and re-testing the role.
Mitigate or rebuild. Both are defensible; the business decides which conflicts it genuinely needs.

The first is mitigation: accept that the conflict exists, but control it, introduce approval workflows, build reports that surface the risky activity, and configure alerts on the violating business operations. The conflict persists, but nothing happens unobserved.

The second is rebuilding: restructure the role so the conflict no longer exists, dropping the specific permissions that create the violation.

We support both. We help clients design and build the workflows, reports, and alerts that make mitigation credible, and where a client prefers to eliminate the conflict outright, we can just as easily drop the offending permissions and keep roles aligned to segregation-of-duties requirements. In practice, most organizations do some of each: mitigate where the business genuinely needs the combined access, rebuild where it doesn't.

✓ Would this apply to your tenant?

This scale of saving from inactive-user cleanup and utilization analysis alone assumes your security is already reasonably well-designed, roles that are mostly single-SKU, permissions that mostly follow the granted-hierarchy rules correctly. If that's true for you, this is close to the ceiling of what a first pass finds. If your estate looks more like scattered multi-license roles built around integrations rather than people, the playbook is different, and usually finds more, not less. See our companion case study for that scenario.

The lesson of this engagement isn't that the client did anything wrong. Their security was among the better configurations we've assessed, and their telemetry proved it.

The lesson is that a well-built security model and an optimally licensed one aren't the same thing. Dormant users accumulate silently. Permission hierarchies drift into states that are unusable but still billable. Read-only roles quietly stop being read-only. None of this shows up in a design review. It only surfaces when you compare what was granted against what's actually used, and in this case, that comparison was worth $40,000 a month.

A third engagement in this series pushed the remediation side further: see our case study on a fully automated D365 security migration for what it actually took to move an optimal design into production without anyone building a role by hand. A fourth shows what the same discipline looks like applied before go-live instead of after: see our case study on a greenfield security design that found a thousand segregation-of-duties conflicts the day before UAT, and what we did about it with no dollar figure attached.