Expert knowledge for Business Layer modeling in Documentation Robotics
Layer Number: 02 Specification: Metadata Model Spec v0.8.3 Purpose: Represents business services, processes, actors, and objects that define the organization's operational structure and capabilities.
The Business Layer captures the operational structure of the organization:
This layer uses ArchiMate 3.2 Business Layer standard without custom extensions, with optional extensions for BPMN integration, SLA tracking, and security controls.
CLI Introspection: Run
dr schema types businessfor the authoritative, always-current list of node types. Rundr schema node <type-id>for full attribute details on any type.
| Entity Type | Description | Key Attributes |
|---|---|---|
| BusinessActor | Organizational entity capable of performing behavior | Examples: Customer, Employee, Partner, Supplier |
| BusinessRole | Responsibility for performing specific behavior | Examples: Sales Representative, Account Manager, System Administrator |
| BusinessCollaboration | Aggregate of business roles working together | Examples: Sales Team, Customer Service Department, Project Team |
| BusinessInterface | Point of access where business service is available | Examples: Customer Portal, Phone Support, Email Support |
| BusinessProcess | Sequence of business behaviors achieving a result | Can include BPMN references, security controls, KPI targets |
| BusinessFunction | Collection of business behavior based on criteria | Examples: Marketing, Sales, Customer Service, Finance |
| BusinessInteraction | Unit of collective behavior by collaboration | Examples: Sales Meeting, Contract Negotiation, Customer Onboarding |
| BusinessEvent | Something that happens and influences behavior | Types: time-driven, state-change, external |
| BusinessService | Service that fulfills a business need | Includes SLA properties, motivation links, APM monitoring |
| BusinessObject | Concept used within business domain | Examples: Order, Invoice, Customer, Opportunity, Support Ticket |
| Contract | Formal specification of agreement | Examples: SLA, Terms of Service, Purchase Agreement |
| Representation | Perceptible form of business object | Required format: pdf, html, xml, json, plain-text, binary |
| Product | Coherent collection of services with a value | Aggregates services and contracts, delivers value to customers |
Use this decision tree before assigning a type to any observed business concept.
IS this an individual person, organization, or system that acts in the business domain?
ā BusinessActor (e.g., Customer, Supplier, Partner)
IS this a named responsibility or hat worn by an actor?
ā BusinessRole (e.g., Sales Representative, Account Manager)
IS this a group of roles working together toward a shared goal?
ā BusinessCollaboration (e.g., Sales Team, Project Team)
IS this a channel or contact point where a business service is accessed?
ā BusinessInterface (e.g., Customer Portal, Phone Support Line)
IS this a structured sequence of steps that produces a business outcome?
ā BusinessProcess (e.g., Order Fulfillment, Loan Approval)
IS this a grouping of related business behaviors (department-level capability)?
ā BusinessFunction (e.g., Marketing, Finance, Customer Support)
IS this a joint behavior performed by two or more roles together?
ā BusinessInteraction (e.g., Contract Negotiation, Sales Meeting)
IS this something that happens and triggers a response in the business?
ā BusinessEvent (e.g., Order Received, Payment Confirmed)
IS this an externally visible capability the business offers to stakeholders?
ā BusinessService (e.g., Order Management Service, Payment Service)
IS this a key domain concept or data entity used in business language?
ā BusinessObject (e.g., Order, Invoice, Customer)
IS this a formal agreement with binding terms between parties?
ā Contract (e.g., SLA, Purchase Agreement, Terms of Service)
IS this a concrete form in which a business object is communicated?
ā Representation (e.g., Invoice PDF, Order Confirmation Email)
IS this a coherent bundle of services with a value proposition for customers?
ā Product (e.g., E-commerce Platform, Premium Support Package)
| Misclassification | Correct Classification | Why |
|---|---|---|
A department or team as BusinessService |
BusinessFunction (department) or BusinessCollaboration (team) |
Services are externally visible capabilities; departments are behavioral groupings |
A REST endpoint or UI as BusinessInterface |
BusinessInterface is correct ā but link it to the ApplicationInterface in the application layer |
Business interfaces are the business-facing access point, not the technical one |
A business rule or policy as BusinessProcess |
BusinessProcess only for sequences of steps; rules belong in Motivation layer as Principle or Constraint |
Processes produce outcomes through behavior; rules govern behavior |
A domain entity (Order, Invoice) as BusinessProcess |
BusinessObject |
Objects are concepts; processes are sequences of behavior |
A job title (Sales Rep) as BusinessActor |
BusinessRole |
Roles are responsibilities; actors are the people/orgs that fill them |
An SLA document as BusinessService |
Contract |
An SLA is a formal agreement, not the service itself |
A product feature as BusinessFunction |
Product if it bundles services with customer value; BusinessService if it's a single capability |
Products aggregate services; functions are internal behavioral groupings |
| Source Type | Predicate | Target Type | Example |
|---|---|---|---|
| Product | composes | BusinessService | "E-commerce Platform" composes "Payment Service" |
| BusinessCollaboration | composes | BusinessRole | "Sales Team" composes "Sales Representative" role |
| BusinessProcess | composes | BusinessProcess | "Order Fulfillment" composes "Pick", "Pack", "Ship" sub-processes |
| BusinessFunction | composes | BusinessProcess | "Sales Function" composes "Lead Generation Process" |
| Product | aggregates | BusinessService | Product bundles multiple services |
| Product | aggregates | Contract | Product includes SLA contracts |
| BusinessCollaboration | aggregates | BusinessRole | Collaboration includes multiple roles |
| BusinessActor | assigned-to | BusinessRole | "John Smith" assigned to "Sales Rep" |
| BusinessActor | assigned-to | BusinessProcess | Actor directly performs process |
| BusinessRole | assigned-to | BusinessProcess | Role responsible for process execution |
| BusinessRole | assigned-to | BusinessFunction | Role performs function |
| BusinessCollaboration | assigned-to | BusinessInteraction | Collaboration performs interaction |
| BusinessProcess | realizes | BusinessService | "Order Processing" realizes "Order Management Service" |
| BusinessFunction | realizes | BusinessService | "Customer Support Function" realizes "Support Service" |
| BusinessInteraction | realizes | BusinessService | "Contract Negotiation" realizes "Contracting Service" |
| Representation | realizes | BusinessObject | "Invoice PDF" realizes "Invoice" concept |
| BusinessObject | specializes | BusinessObject | "RetailCustomer" specializes "Customer" |
| BusinessRole | specializes | BusinessRole | "Senior Sales Rep" specializes "Sales Rep" |
| Contract | specializes | Contract | "Premium SLA" specializes "Standard SLA" |
| Source Type | Predicate | Target Type | Example |
|---|---|---|---|
| BusinessEvent | triggers | BusinessProcess | "Order Received" triggers "Order Fulfillment Process" |
| BusinessEvent | triggers | BusinessFunction | "Monthly Close" triggers "Financial Reporting Function" |
| BusinessEvent | triggers | BusinessInteraction | "Customer Complaint" triggers "Issue Resolution Interaction" |
| BusinessProcess | triggers | BusinessEvent | "Payment Complete" triggers "Order Confirmed Event" |
| BusinessInteraction | triggers | BusinessProcess | "Sales Meeting" triggers "Proposal Generation Process" |
| BusinessProcess | flows-to | BusinessProcess | "Credit Check" flows to "Order Approval" |
| BusinessInteraction | flows-to | BusinessProcess | "Negotiation" flows to "Contract Signing" |
| BusinessService | serves | BusinessActor | "Customer Portal" serves "Customer" |
| BusinessService | serves | BusinessRole | "Reporting Service" serves "Manager" role |
| BusinessService | serves | BusinessProcess | "Authentication Service" serves "Login Process" |
| BusinessInterface | serves | BusinessActor | "Mobile App" serves "Customer" |
| BusinessInterface | serves | BusinessRole | "Admin Console" serves "Administrator" role |
| BusinessProcess | accesses | BusinessObject | "Order Process" accesses "Order" object |
| BusinessFunction | accesses | BusinessObject | "Billing Function" accesses "Invoice" object |
| BusinessInteraction | accesses | BusinessObject | "Contract Review" accesses "Contract" object |
| Contract | associated-with | BusinessService | SLA contract associated with service delivery |
| BusinessObject | associated-with | BusinessProcess | "Customer" associated with "Onboarding Process" |
| Target Layer | Reference Type | Example |
|---|---|---|
| Layer 1 (Motivation) | BusinessService delivers Value | "Payment Service" delivers "Revenue Generation" value |
| Layer 1 (Motivation) | BusinessService supports Goal | Service achieves business goals |
| Layer 1 (Motivation) | BusinessService governed by Principle | Follows business principles |
| Layer 1 (Motivation) | BusinessActor is Stakeholder | Actor maps to stakeholder in motivation layer |
| Layer 1 (Motivation) | BusinessProcess achieves Goal | Process realizes business goals |
| Layer 1 (Motivation) | Contract drives Constraint | SLA contract defines constraints |
| Layer 4 (Application) | BusinessService realized by ApplicationService | "Order Service" realized by "OrderManagementAPI" |
| Layer 4 (Application) | BusinessProcess automated by ApplicationProcess | Process workflow automated by application |
| Layer 4 (Application) | BusinessObject represented in DataObject | "Customer" business concept maps to customer data object |
| Layer 4 (Application) | BusinessEvent triggers ApplicationEvent | Business event generates application event |
| Layer 3 (Security) | BusinessProcess protected by SecurityControl | Process has authentication/authorization |
| Layer 3 (Security) | BusinessCollaboration maps to SecurityActor | Team maps to security roles |
| Layer 6 (API) | BusinessInterface maps to API Operation | Portal interface maps to REST endpoints |
| Layer 7 (Data Model) | BusinessObject ā JSON Schema | Business object defined as schema |
| Layer 11 (APM) | BusinessProcess tracked by BusinessMetric | Process performance measured |
| Layer 11 (APM) | BusinessService defines KPI Target | SLA targets for monitoring |
Lower layers (Application, Technology, API, etc.) reference Business layer elements to show:
# FastAPI Business Service
@app.post("/api/orders")
async def create_order(order_data: OrderRequest):
"""Creates a new customer order (Business Service: Order Management)"""
pass
Maps to:
from dataclasses import dataclass
@dataclass
class Customer:
"""Customer business object"""
customer_id: str
name: str
email: str
status: str # active, inactive, suspended
Maps to:
// Domain events
export enum BusinessEvents {
ORDER_CREATED = "order.created",
ORDER_FULFILLED = "order.fulfilled",
PAYMENT_RECEIVED = "payment.received"
}
Maps to:
# Process definition with BPMN reference
class OrderFulfillmentProcess:
"""
Order fulfillment business process
BPMN: processes/order-fulfillment.bpmn
KPI: 95% orders fulfilled within 24 hours
"""
def execute(self, order_id: str):
pass
Maps to:
bpmn-file, kpi-targetfrom enum import Enum
class BusinessRole(Enum):
SALES_REP = "sales_representative"
ACCOUNT_MANAGER = "account_manager"
CUSTOMER_SERVICE = "customer_service"
ADMIN = "administrator"
@require_role(BusinessRole.SALES_REP)
def create_opportunity(data):
pass
Maps to:
# Service SLA definitions
services:
order_processing:
sla:
availability: 99.9%
response_time: 500ms
throughput: 1000 req/sec
business_hours: "24/7"
Maps to:
Before declaring business layer extraction complete, verify ALL 13 entity types have been considered:
ā” BusinessActor ā people, orgs, or systems that act (Customer, Supplier, Partner)
ā” BusinessRole ā named responsibilities assigned to actors (Sales Rep, Admin)
ā” BusinessCollaboration ā groups of roles working together (Sales Team, Support Dept)
ā” BusinessInterface ā access points where services are available (Portal, API, Phone)
ā” BusinessProcess ā step sequences producing a business outcome (Order Fulfillment)
ā” BusinessFunction ā department-level behavioral capability (Marketing, Finance)
ā” BusinessInteraction ā collective behavior by a collaboration (Contract Negotiation)
ā” BusinessEvent ā triggers: time-driven, state-change, external (Order Received)
ā” BusinessService ā externally visible capability (Order Management, Payment)
ā” BusinessObject ā key domain concepts (Order, Invoice, Customer, Opportunity)
ā” Contract ā formal agreements: SLA, Terms of Service, Purchase Agreement
ā” Representation ā concrete forms of objects (format: pdf, html, xml, json, plain-text, binary)
ā” Product ā bundles of services with customer value proposition
If any type has ZERO elements, explicitly decide:
"This type doesn't apply to this codebase" with reasoning.
# Add business actors
dr add business actor "Customer" \
--description "End user purchasing products"
dr add business collaboration "Sales Team" \
--description "Internal sales organization"
# Add business roles
dr add business role "Sales Representative" \
--description "Responsible for customer acquisition"
dr add business role "Account Manager" \
--description "Manages existing customer relationships"
# Core business service
dr add business service "Order Management Service" \
--description "Manages customer order lifecycle"
# Link to motivation layer
dr relationship add business.businessservice.order-management-service \
motivation.goal.improve-order-efficiency --predicate supports
# Main process
dr add business process "Order Fulfillment Process" \
--description "End-to-end order fulfillment from creation to delivery"
# Sub-processes
dr add business process "Pick Items Process" \
--description "Pick items from warehouse inventory"
dr add business process "Pack Order Process" \
--description "Pack picked items for shipment"
# Composition relationships
dr relationship add business.businessprocess.order-fulfillment-process \
business.businessprocess.pick-items-process --predicate composes
dr relationship add business.businessprocess.order-fulfillment-process \
business.businessprocess.pack-order-process --predicate composes
# Process flows
dr relationship add business.businessprocess.pick-items-process \
business.businessprocess.pack-order-process --predicate flows-to
# Core business objects
dr add business object "Order" \
--description "Customer purchase order"
dr add business object "Customer" \
--description "Individual or organization purchasing products"
dr add business object "Product" \
--description "Item available for purchase"
# Process access to objects
dr relationship add business.businessprocess.order-fulfillment-process \
business.businessobject.order --predicate accesses
# Events that trigger processes
dr add business event "Order Received" \
--description "New order submitted by customer"
dr add business event "Payment Confirmed" \
--description "Payment successfully processed"
# Event triggering
dr relationship add business.businessevent.order-received \
business.businessprocess.order-fulfillment-process --predicate triggers
# Link to application layer
dr relationship add business.businessservice.order-management-service \
application.applicationservice.order-api --predicate realized-by
# Link to motivation layer
dr relationship add business.businessservice.order-management-service \
motivation.value.customer-satisfaction --predicate delivers
# Link to data layer
dr relationship add business.businessobject.order \
data-model.objectschema.order --predicate defined-by
dr validate --layers business
dr validate --relationships
Product: "E-commerce Platform"
āāā composes ā BusinessService: "Order Service"
ā āāā realizes ā BusinessProcess: "Order Fulfillment"
ā ā āāā triggers ā BusinessEvent: "Order Received"
ā ā āāā accesses ā BusinessObject: "Order"
ā ā āāā assigned-to ā BusinessRole: "Order Processor"
ā āāā realized-by ā ApplicationService: "OrderManagementAPI"
āāā composes ā BusinessService: "Payment Service"
ā āāā realizes ā BusinessProcess: "Payment Processing"
āāā aggregates ā Contract: "E-commerce SLA"
BusinessFunction: "Customer Support"
āāā composes ā BusinessProcess: "Ticket Resolution"
ā āāā triggers ā BusinessEvent: "Support Request Received"
ā āāā assigned-to ā BusinessRole: "Support Agent"
ā āāā accesses ā BusinessObject: "Support Ticket"
ā āāā flows-to ā BusinessProcess: "Follow-up Communication"
āāā realizes ā BusinessService: "Support Service"
ā āāā serves ā BusinessActor: "Customer"
ā āāā properties: sla-response-time=2h, sla-resolution-time=24h
āāā tracked-by ā BusinessMetric: "First Response Time"
BusinessCollaboration: "Sales Team"
āāā composes ā BusinessRole: "Sales Representative"
āāā composes ā BusinessRole: "Sales Manager"
āāā assigned-to ā BusinessInteraction: "Sales Meeting"
āāā accesses ā BusinessObject: "Opportunity"
āāā flows-to ā BusinessProcess: "Proposal Generation"
āāā triggers ā BusinessEvent: "Deal Closed"
When business processes reference BPMN diagrams:
dr add business process "Loan Approval Process" \
--description "End-to-end loan application review and approval"
BPMN Properties:
bpmn-file: Path to BPMN XML filebpmn-version: BPMN specification version (2.0)bpmn-task-mapping: Map BPMN tasks to business rolesValidation: Ensure BPMN task IDs align with business process sub-processes.
Business services can define SLA targets:
business-service:
id: "payment-processing-service"
properties:
sla-availability: "99.99%"
sla-response-time: "200ms"
sla-throughput: "5000 tps"
business-hours: "24/7"
escalation-time: "15m"
These SLAs flow down to:
dr export archimate --layers business --output business.archimate
Supported ArchiMate Elements:
| Issue | Cause | Fix |
|---|---|---|
| Orphaned Process | No event triggers it, no service realizes it | Add triggering event or link to service |
| Unrealized Service | No process/function realizes the service | Add process that implements the service |
| Missing Business Objects | Processes don't access any objects | Identify key domain concepts and add them |
| No Cross-Layer Relationships | Business not linked to application/data | Add realization relationships to lower layers |
| Unassigned Roles | Roles not assigned to processes | Assign roles to show responsibility |
| Missing SLA Properties | Services lack performance targets | Add SLA properties for monitoring |
Add Commands:
dr add business actor <name>
dr add business role <name>
dr add business service <name> --description <description>
dr add business process <name> --description <description>
dr add business object <name>
dr add business event <name> --description <description>
dr add business function <name>
dr add business collaboration <name>
Relationship Commands:
dr relationship add <source> <target> --predicate realizes
dr relationship add <source> <target> --predicate composes
dr relationship add <source> <target> --predicate assigned-to
dr relationship add <source> <target> --predicate triggers
dr relationship add <source> <target> --predicate flows-to
dr relationship add <source> <target> --predicate accesses
dr relationship add <source> <target> --predicate serves
Cross-Layer Relationship Commands:
dr relationship add <business-service> <motivation-goal> --predicate supports
dr relationship add <business-service> <application-service> --predicate realized-by
dr relationship add <business-object> <data-schema> --predicate defined-by