Repository navigation
Evolving Contacts into an Operational Responsibility and Scope Model for MSP/MSSP Workflows #7891
Replies: 1 comment
|
Thanks for this, @fabicarvano. The direction fits, and more of it is already in place than the proposal assumes, so most of my notes are about anchoring it to what's on main. What exists today: contacts are first-class rows in Who reads roles today. Each of these needs a defined meaning once roles carry a scope:
On your questions: Q2, hierarchy: org, site and device group, yes, with one caveat. It isn't a strict tree: Leave device-level scope out of v1. Real devices have no contact link today. The only ones are Q3, migration: org scope is right for site-less contacts only. A contact with Q4, escalation: agreed, keep it off the contact record. Note that there's already an escalation model: Q5, reuse: yes, that's the reason to do it. The operator recipe library already treats contacts as task targets ( What I'd change:
Tenancy notes for the spec:
Next step: if you want to take it on, write it up as a spec PR under Status: good fit; spec PR next. |
Uh oh!
There was an error while loading. Please reload this page.
Evolving Contacts into an Operational Responsibility and Scope Model for MSP/MSSP Workflows
Context
For MSPs and MSSPs, customer contacts are much more than a simple address book.
They often represent important operational responsibilities, such as:
As the platform evolves, having these contacts structured consistently becomes increasingly important.
Breeze already has a solid contact foundation today, with functions such as:
The proposal is not to replace this model, but to evolve it while preserving the existing contacts, names, and functions.
Proposal
The idea would be to organize contacts around three simple concepts:
Contact
↓
Responsibility
↓
Scope
Examples:
John Smith
→ Responsibility: Technical
→ Scope: Entire organization
Mary Jones
→ Responsibility: Technical
→ Scope: Device Group "Servers"
Robert
→ Responsibility: Local Contact
→ Scope: Rio de Janeiro Site
→ optionally related to specific assets within that site
Susan
→ Responsibility: Approver
→ Scope: Device Group "Critical Servers"
The available scopes could follow the hierarchy Breeze already has:
Organization
↓
Site
↓
Device Group
↓
Specific Device
And, where appropriate, support multiple selections.
Preserve Everything That Already Exists
A key point would be to avoid losing or invalidating any existing contact data.
Existing contacts and functions could simply be redistributed into the new model automatically.
Current example:
John
Function: Technical
Would become:
John
Responsibility: Technical
Scope: Entire organization
Another example:
Jose
Function: Administration
Would become:
Jose
Responsibility: Administration
Scope: Entire organization
In other words, we keep:
and only add the concept of where that responsibility applies.
The user could then refine the scope later.
For example:
Technical
→ Entire organization
could be changed to:
Technical
→ São Paulo Site
→ Servers Device Group
So this would be an additive evolution, not a replacement of the existing model.
Some Existing Functions Could Gain More Context
Local Contact
Today, we only know that a person is "Local".
With the new model, we could know:
Local Contact
→ Rio de Janeiro Site
→ optionally related to specific assets within that site
That makes the information much more useful for an MSP operation.
After Hours
It is also not enough to know that someone is an "After Hours" contact.
Eventually, we need to know:
After Hours
→ for which site
→ for which device group
→ or for which specific assets
The actual scheduling and activation logic can be evolved separately later.
Escalation
Escalation probably deserves its own Escalation Plan concept rather than putting all escalation logic directly into the contact record.
A future escalation plan could define levels such as:
N1
→ N2
→ Management
→ Emergency
→ Crisis
and reference the contacts already registered and structured in the contact model.
Approvers
Approval responsibilities may also need more context.
For example:
Carlos
→ Responsibility: Approver
→ Type: Financial
→ Scope: Entire organization
or:
John
→ Responsibility: Approver
→ Type: Technical
→ Scope: Device Group "Production Servers"
This avoids creating many separate responsibilities such as:
Instead, we keep one responsibility:
Approver
and add the necessary context.
Why This Matters Beyond Contacts
The main benefit is that this could turn the contact model into a reusable operational foundation for other Breeze capabilities.
Escalation Plans
A future escalation plan could use the existing contact data directly:
Incident
→ identify applicable contact
→ N1
→ N2
→ Management
→ Emergency
→ Crisis
Without having to register the same people again in another module.
Playbooks
A playbook could dynamically resolve:
Technical Responsible
Approver
Local Contact
Security Responsible
based on the organization, site, device group, or device involved.
This avoids hard-coding individual names inside automations.
Service Delivery
Existing Service Delivery capabilities could use this structure to understand who is responsible for:
Future SOPs
This model could also become a foundation for future operational SOPs.
For example:
SOP: Critical Incident
The SOP would not need to say:
"Call John"
It could say:
"Contact the Technical Responsible"
Breeze would then resolve the correct person using:
Contact
If John leaves the company and Peter takes over, only the contact assignment needs to change.
There would be no need to edit every SOP, playbook, or workflow that depends on that responsibility.
Why This Is Relevant for MSP/MSSP Operations
In an MSP/MSSP operation, knowing:
who is responsible for what
is as important as knowing:
which device belongs to the customer
Breeze already has a strong structure for assets.
It also already has a contact foundation.
The opportunity is to connect those two worlds.
Today:
Customer
├── Contacts
│
└── Infrastructure
├── Sites
├── Device Groups
└── Devices
The evolution would be:
Contact
↓
Responsibility
↓
Scope
↓
Operational Workflows
This could allow multiple future capabilities to reuse the same information instead of each module creating its own way of defining contacts and responsibilities.
Questions for Maintainer Feedback
I would like to understand whether this direction fits the current Breeze model.
Some key questions:
The immediate goal would be relatively simple:
make the existing contact foundation more structured and operational without breaking or losing any existing contact data.
The long-term benefit would be to create a common operational contact model that multiple parts of Breeze could reuse.
All reactions