Skip to content
Photographic illustration of an administrative team using workstations and a tablet in an office overlooking a warehouse
Software development7 min readOctober 26, 2026

Custom multisite CRM: permissions and shared customers

D
Written by
Daillac
Contents
In a company with several locations, one customer may work with multiple branches without every employee needing access to every file. A custom CRM must define who may act, on which record and under what circumstances. The difficult decisions arise when an employee changes branches, a customer becomes shared or two teams edit the same record.

Separate customer identity, local relationship and sales file

A shared customer record may hold identity and necessary business contact details. A local relationship identifies the branch serving that customer. A sales file carries its proposal, notes and responsible staff. When these objects are merged into one concept, changing the customer’s branch can move the entire history or hide active files. Decide those consequences before designing the dashboard, and ask the teams who handle exceptions to review the examples.
A custom CRM or ERP can represent responsibilities according to your operations. Define viewing, editing, approval and export separately. Owning a sales file does not necessarily grant the right to approve a discount on it. Head office may need consolidated indicators without access to every local note. Each permission should correspond to an identified task and an owner who can explain why it is necessary.

Use a permission matrix that includes denials

TableExample rules for review with business owners · shareable block
Example rules for review with business owners
Proposed accessBoundary to test
Local sales representativeView and edit assigned files at their locationDeny confidential notes from another branch
Local managerReassign and approve within their scopeDeny changes in another branch
Shared account managerView explicitly shared sales filesAvoid implicit access to the entire history
Head office operationsView indicators and records needed for the roleLimit exports and personal detail
Technical administratorManage approved accounts and configurationAvoid permanent business rights by default
This is a design proposal rather than a universal policy. Confirm exceptions with the teams involved. Dataverse documentation describes business units, roles and teams, illustrating that permissions can have several dimensions. A custom application must implement and verify its own rules. Borrowing a product’s terminology does not reproduce that product’s security model or prove that a particular implementation protects data correctly.

When a salesperson changes branches

Consider a fictional scenario: Léa moves from the Laval branch to Quebec City. During a business-approved transition she keeps two active Laval files, while her new files belong to Quebec City. A rule based only on her current branch would remove necessary access too early. Keeping all historical access indefinitely would expose records she no longer needs for her work.
In this example, the company chooses temporary assignments on the two files. The Laval manager remains accountable for their progress. A named person receives the task of removing sharing when the transfer ends. This hypothetical workflow does not describe a Daillac customer. The company must choose a review date and ending conditions that fit its organization. A temporary exception needs someone responsible for closing it.
Test less visible effects too: search results, attachments, notifications, exports and saved links. A record denied in the main interface should not remain available through a new export request or an old download link still served by the application. Revoking access does not delete a copy that was already downloaded. Access controls need to apply on the server to the objects involved. OWASP’s authorization guidance recommends denying access by default and checking permissions on every request. Hiding a button alone does not establish an authorization boundary.

When two locations serve the same customer

In another fictional case, Laval and Quebec City create records for the same company. Both sales files remain legitimate. Merging the customer identity should preserve their provenance, owners and histories. Avoid treating a merge as a simple identifier replacement. A mistake could attach a confidential proposal to a wider access scope than the business intended. Show those consequences to the person approving the merge.
Provide a suggested match, review by an authorized person and a preview of consequences before confirmation. Retain the previous record identifiers in the merge history. Conflicting contact details require an explicit decision: which value survives, and what supports that choice? Someone joining the team later should be able to understand the outcome without finding the employee who made the original decision.
Define visible handling for simultaneous changes. An update may be rejected when another version has already been saved, allowing the user to review that change before trying again. Developers will choose the appropriate mechanism, but the business must decide whether an update can silently overwrite another. A custom web application should explain that behaviour clearly enough for staff to recover without guessing.

Acceptance scenarios for organizational changes

TableFictional scenarios to run before launch · shareable block
Fictional scenarios to run before launch
ActionExpected outcome
Laval salespersonOpen an assigned file and another branch’s fileFirst allowed; second denied without sharing
Léa changes branchUpdate location and open a transition fileAccess limited to temporarily assigned files
Transition endsRemove sharing and retry a direct linkOld access denied and history retained
Quebec City managerReassign a Laval sales fileDenied under the agreed matrix
Customer mergeJoin two identities with local sales filesProvenance and file permissions preserved
Concurrent updateSave competing changes to one recordConflict handled under the approved rule
Consolidated exportExport through a restricted head-office roleExcluded fields absent from the file
For each scenario, record the accounts used, starting state and observed result. Include secondary routes such as direct URLs, global search and attachments. Repeat affected cases when a role or integration changes. These examples provide an initial acceptance grid; no tests were performed for this article. The actual test package needs organization-specific data, approved rules and a business owner who can accept the result.

Apply the same boundaries to automation

CRM and ERP automation often operates through a service account. Give it the scope it needs and record the target file and origin of the request. A synchronization process should not turn local sharing into general access. Check how it responds when someone loses a permission while a queued task is still waiting. The business must decide whether that task may proceed and how its decision is recorded.
Assign the matrix to a business owner and review organizational changes before enabling them. Maintain an exception register with reasons and review dates. Acceptance comes from concrete situations: employees can complete their work, expected denials hold, and decisions remain understandable when a file passes between locations. Keep the approved matrix with the test evidence so future changes have a documented starting point.

Multisite CRM questions

Must a customer belong to only one branch?+
A shared identity can coexist with local relationships and sales files. Commercial ownership and access permissions should be defined separately.
Does head office need every local note?+
That depends on its tasks. Consolidated indicators may be enough for some roles; details and exports require explicit permissions.
What happens when an employee changes location?+
Review access and active files, define any necessary temporary sharing and assign someone to remove it when the transition ends.
How should duplicate customers be handled?+
Use detection followed by a controlled merge with provenance, preserved permissions and review of conflicting contact details.

Define your multisite CRM rules

Bring a branch-transfer scenario and a shared customer example to define the permissions that need verification.
D
Written by
Daillac

Editorial and software engineering team