Skip to main content

Multi-Org Management

O.D.I.N. supports multiple organizations within a single installation. Each organization is a logical container for users, printers, models, and spools. Organizations are ideal for print farms serving multiple clients, educational institutions with multiple labs or classes, and businesses with distinct departments.

Enterprise License Required

Organizations require an Enterprise license. Community, Pro, and Education licenses do not include multi-org support.


Groups vs. Organizations

O.D.I.N. has two overlapping concepts:

ConceptPurposeAPI
GroupsLogical groupings of users for approval routing and access scoping (v1.1.0)GET/POST /api/groups
OrganizationsFull resource containers with per-org settings, branding, and webhooks (v1.3.0)GET/POST /api/orgs

Under the hood, organizations are groups with is_org = 1. All groups can serve as approval routing targets. Only organizations have per-org settings (filament defaults, quiet hours, webhooks, branding).


Creating an Organization

  1. Go to Settings → Access → Organizations
  2. Click New Organization
  3. Enter a name and optional description
  4. The creating admin becomes the organization owner

Only admins can create, update, and delete organizations.


Assigning Resources

Resources scoped to an organization are only visible to members of that organization (plus admins). Three resource types support org scoping:

ResourceHow to Assign
PrintersSettings → Access → [Org] → Printers → Assign Printer
ModelsModel Library — set org on model detail
SpoolsInventory → Spools — set org on spool

A printer can be set as shared (shared = true) to make it visible across all organizations on the installation.


Assigning Users to an Organization

  1. Go to Settings → Access → Organizations → [Org Name] → Members
  2. Click Add Member and select a user
  3. The user is now a member of the organization and sees only org-scoped resources

A user can belong to only one organization at a time. Removing a user from an organization un-scopes them (they see all unscoped resources again).


Per-Organization Settings

Each organization has a settings_json field in the database. O.D.I.N. merges these with system defaults when displaying org-specific behavior.

KeyTypeDescription
default_filament_typestring or nullDefault filament type pre-selected when creating jobs for org printers
default_filament_colorstring or nullDefault filament color (hex) for org jobs
quiet_hours_enabledbooleanWhether quiet hours are active for this org
quiet_hours_startstringQuiet period start time (24h format, e.g. "22:00")
quiet_hours_endstringQuiet period end time (e.g. "07:00")
webhook_urlstring or nullPer-org webhook URL (Fernet-encrypted at rest)
webhook_typestring"discord", "slack", or "generic"
branding_app_namestring or nullOverride app name for users in this org
branding_logo_urlstring or nullOverride logo URL for users in this org

Configure these under Settings → Access → [Org Name] → Settings.


Group Ownership and Job Approval Routing

Every group/organization can have an owner (a user designated as the primary contact). When a job is submitted that requires approval, the approval alert is routed to the owner of the submitter's group.

This allows multi-class setups where each class has a lab supervisor who receives approval requests from their students only.


Education Environments

Organizations map naturally to classes or lab sections. Create one org per class, assign the lab computers (printers) to that org, and add students as Viewer-role members. Each class sees only its printers and models. The lab supervisor is the org owner and receives all job approval alerts for that class.

See Users & Access Control for the job approval workflow.


See Also