OrganizationContext: Context
Item | Value |
---|---|
Briefly | Brief description missing. |
Authors | |
Definition Path | ImprovingApp.OrganizationContext |
View Source Link | organization.riddl(4:1) |
The Organization bounded context is responsible for the definition of various organizational entities and the relationships between organizations. In this RIDDL definition we have only provided a single definition for Organization. However, as visualize Organization there are two types of organizations: BaseOrganizations and SubOrganizations. The BaseOrganization has no parent and is the financially responsible entity. There is exactly one BaseOrganization within an organizational structure. (Improving.App at large is designed as a multi-tenant system so there could be multiple BaseOrganizations defined, but there is no relationship between BaseOrganizations). Licensing and processing fees are paid by the BaseOrganization and revenue from sales activities are paid back to the BaseOrganization (who may decide if/how to distribute those funds to their SubOrganizations). Every other Organization within the structure is necessarily a SubOrganization.
For the remainder of this document we will either use Organization generically or we will provide a more specific term to make clear the “roles” of organizations in various contexts. For example, Parent Organization and Child Organization are useful terms to describe the relationship between two organizations. Organizations are arranged in a tree-like structure with the BaseOrganization at the base of that structure. A child organization is a subset of a parent organization. For example, you may have a Football team organization (parent), that has child organizations of Varsity, Junior Varsity, Sophomore, and Freshman teams. A Parent Organization could be a Child to yet another Organization. Another way to say this is, being a Parent Organization does not necessarily mean it is also a BaseOrganization.
Organizations can be in one of the following states:
- Draft: an organization that is in process of being defined.
- Active: an organization that is fully defined and currently in use.
- Inactive: an organization that may be fully defined but is not in use. This state is typically self induced, for example, the school year ends.
- Suspended: an organization that is non-functioning because of violation of terms, non-payment, or similar reason. If these concerns are remedied the organizaton may be moved back to active status by a BaseOrganization Admin.
- Terminated: an organization that is non-functioning and will not or cannot be brought back to active status. Typically, only the organization ID and Name are retained to maintain internal consistency.
Organizations can be public or private.
The differences are:
- Membership - to become a member of a private organization you must be invited or approved by an admin.
- Events - By default, events from private organizations are private. and events from public organizations are public. This can be changed at event creation.
- Event Searchability - Members of public organizations can find/be notified about public events from the organization or its children. Only members of private organizations can find private events for those organizations
- E.g. Hogwarts is a public base org, HogWarts Sports Clubs is a public org, child of Hogwarts, Hogwarts Quidditch club is a private org child of Hogwarts Sports Clubs.
- Quidditch practice is a private event created by the Hogwarts Quidditch club (organization) and is only visible to members of the Hogwarts Quidditch club.
- Quidditch Game is a public event, created by the Hogwarts Quidditch club and is visible to all members of Hogwarts and children organizations - and is also findable by any member of any organization looking for public events from Hogwarts.
--- title: Context Map For Context 'OrganizationContext' init: theme: dark flowchart: defaultRenderer: dagre width: 100% useMaxWidth: true securityLevel: loose --- flowchart TB classDef default fill:#666,stroke:black,stroke-width:3px,color:white; classDef OrganizationContext_class color:white,stroke-width:3px; subgraph 'Domain 'ImprovingApp'' direction TB OrganizationContext((Context 'OrganizationContext')) end class OrganizationContext OrganizationContext_class
- OnMessageClause ‘On command OrganizationContext.EstablishOrganization’ in Handler ‘OrgHandler’
- OnMessageClause ‘On event OrganizationContext.OrganizationEstablished’ in Handler ‘OrgHandler’
- ActivateOrganization: Command
- On Behalf Of
- Organization ID
- AddMembersToOrganization: Command
- Members to Add
- On Behalf Of
- Organization ID
- AddOwnersToOrganization: Command
- On Behalf Of
- Organization ID
- Owners to Add
- ContactList: Type
- Contacts: Type
- Billing Contacts
- Distribution Contacts
- Primary Contacts
- EditableInfo: Type
- Address
- Is Private
- Logo
- Name
- Short Name
- URL
- EditOrganizationInfo: Command
- New Info
- On Behalf Of
- Organization ID
- EstablishOrganization: Command
- Contacts
- Info
- Members
- On Behalf Of
- Org ID
- Owners
- Parent
- Tenant
- FindOrganizationsByMemberOrOwner: Query
- Is Member
- Member or Owner
- GetOrganizationContacts: Query
- Org ID
- GetOrganizationInfo: Query
- Organization ID
- GetOrganizationMembers: Query
- Org ID
- GetOrganizationMeta: Query
- Org ID
- GetOrganizationOwners: Query
- Org ID
- GetOrganizationParent: Query
- Org ID
- GetOrganizationState: Query
- Org ID
- Info: Type
- Address
- Is Private
- Logo
- Name
- Short Name
- Tenant
- URL
- MemberList: Type
- MembersAddedToOrganization: Event
- Meta
- New Members
- Organization ID
- MembersRemovedFromOrganization: Event
- On Behalf Of
- Organization ID
- Removed Members
- MetaInfo: Type
- Children
- Created By
- Created On
- Current State
- Last Updated
- Last Updated By
- Organization: Entity
- DraftOrganization: State
- DraftOrganizationHandler: Handler
- On Command Activate Organization
- On Command Add Members to Organization
- On Command Add Owners to Organization
- On Command Edit Organization Info
- On Command Improving App. Organization Context. Establish Organization
- On Command Remove Members From Organization
- On Command Remove Owners From Organization
- On Command Update Organization Contacts
- On Command Update Parent
- On Query Get Organization Contacts
- On Query Get Organization Info
- On Query Get Organization Members
- On Query Get Organization Meta
- On Query Get Organization Owners
- On Query Get Organization Parent
- On Query Get Organization State
- Other
- DraftOrganizationHandler: Handler
- DraftOrganizationState: Record
- Contacts
- ID
- Info
- Members
- Org Meta
- Owners
- Parent
- EstablishedOrganization: State
- ActiveOrganizationHandler: Handler
- On Command Improving App. Organization Context. Add Members to Organization
- On Command Improving App. Organization Context. Add Owners to Organization
- On Command Improving App. Organization Context. Edit Organization Info
- On Command Improving App. Organization Context. Establish Organization
- On Command Improving App. Organization Context. Remove Members From Organization
- On Command Improving App. Organization Context. Remove Owners From Organization
- On Command Improving App. Organization Context. Suspend Organization
- On Command Improving App. Organization Context. Terminate Organization
- On Command Improving App. Organization Context. Update Organization Contacts
- On Command Improving App. Organization Context. Update Parent
- On Query Get Organization Contacts
- On Query Get Organization Info
- On Query Get Organization Members
- On Query Get Organization Meta
- On Query Get Organization Owners
- On Query Get Organization Parent
- On Query Get Organization State
- Other
- SuspendedOrganizationHandler: Handler
- On Command Activate Organization
- On Command Improving App. Organization Context. Establish Organization
- On Command Suspend Organization
- On Command Terminate Organization
- On Query Get Organization Contacts
- On Query Get Organization Info
- On Query Get Organization Members
- On Query Get Organization Meta
- On Query Get Organization Owners
- On Query Get Organization Parent
- On Query Get Organization State
- Other
- ActiveOrganizationHandler: Handler
- EstablishedOrganizationState: Record
- Contacts
- ID
- Info
- Members
- Org Meta
- Owners
- Parent
- OrganizationHandler: Handler
- On Command Improving App. Organization Context. Establish Organization
- Other
- TerminatedOrganization: State
- TerminatedOrganizationState: Record
- Last Meta
- DraftOrganization: State
- OrganizationAccountsUpdated: Event
- Info
- Meta
- OrganizationActivated: Event
- Meta
- Organization ID
- OrganizationCommand: Type
- OrganizationContacts: Result
- Contacts
- Org ID
- OrganizationContactsUpdated: Event
- Contacts
- Meta
- Organization ID
- OrganizationEstablished: Event
- Contacts
- Info
- Members
- Meta
- Organization ID
- Owners
- Parent
- OrganizationEvent: Type
- OrganizationInfo: Result
- Info
- OrganizationInfoEdited: Event
- Info
- Meta
- Organization ID
- OrganizationListByMemberOrOwner: Result
- Is Member
- Member or Owner
- Organizations
- OrganizationMembers: Result
- Members
- OrganizationMeta: Result
- Meta
- OrganizationOwners: Result
- Owners
- OrganizationParent: Result
- Parent
- OrganizationState: Result
- Current State
- OrganizationStates: Type
- Active
- Draft
- Suspended
- OrganizationSuspended: Event
- Meta
- Organization ID
- OrganizationsView: Projector
- Fields: Record
- Org ID
- Org Member
- Org Owner
- OrganizationsView: Handler
- On Event Improving App. Organization Context. Organization Established
- On Event Members Added to Organization
- On Event Members Removed From Organization
- On Event Owners Added to Organization
- On Event Owners Removed From Organization
- On Query Find Organizations by Member or Owner
- Fields: Record
- OrganizationTerminated: Event
- Meta
- OwnerList: Type
- OwnersAddedToOrganization: Event
- Meta
- New Owners
- Organization ID
- OwnersRemovedFromOrganization: Event
- Meta
- Organization ID
- Removed Owners
- Parent: Type
- ParentUpdated: Event
- Meta
- New Parent
- Organization ID
- RemoveMembersFromOrganization: Command
- Members to Remove
- On Behalf Of
- Organization ID
- RemoveOwnersFromOrganization: Command
- On Behalf Of
- Organization ID
- Owners to Remove
- SuspendOrganization: Command
- On Behalf Of
- Organization ID
- TerminateOrganization: Command
- On Behalf Of
- Organization ID
- UpdateOrganizationAccounts: Command
- Organization ID
- UpdateOrganizationContacts: Command
- Contacts
- On Behalf Of
- Organization ID
- UpdateParent: Command
- New Parent
- Organization ID
- OrganizationCommandsChannel: Connector
- OrganizationEventsChannel: Connector
- OrganizationCommandsSink: Streamlet
- Sink
- OrganizationCommandsSource: Streamlet
- Source
- OrganizationEventsSink: Streamlet
- Sink
- OrganizationEventsSource: Streamlet
- Source