---
title: "Work Centers"
description: "A work center is one production capacity bucket — a machine, a labor pool, a workbench, a paint booth, or an external supplier slot."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.beelocity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Work Centers

A **work center** is one production capacity bucket — a machine, a labor pool, a workbench, a paint booth, or an external supplier slot. Routings reference work centers (not specific machines) so the scheduler is free to load any equivalent resource within the bucket.

Work centers do not track stock. They track _time_ — how many hours are available, how efficiently they run, and how much each hour absorbs into the cost of finished goods.

## Setting Up a Work Center

To define a new work center:

1. Navigate to **Manufacturing > Work Centers** in the sidebar.
2. Click **New**.
3. Fill in the details:
- **Code** — Short identifier (e.g. `WC-CNC-01`).
- **Name** — Human label (e.g. `CNC Mill #1`).
- **Description** — Optional notes about layout, tooling, certifications.
- **Capacity Type** — `Machine`, `Labor`, or `Both` (see below).
- **Resources** — How many parallel resources this bucket provides (e.g. `1` for one machine, `4` for a four-person crew).
- **Efficiency Factor** — A multiplier on nominal operation time. `1.00` means the work center hits theoretical throughput; `0.85` means it actually runs at 85%, so every operation takes ~17% longer than its nominal duration. Most real-world centers fall between 0.80 and 0.95.
- **Cost Rate / hr** — The combined labor + overhead absorption rate, e.g. `1200 DZD/hour`. This is what the cost engine uses to compute the labor + overhead component of every finished product.
- **Currency** — The currency of the cost rate (typically DZD).
- **Calendar** — The recurring weekly availability pattern; see [Calendars](#calendars).
- **Default Warehouse** — Optional. Where component issues default to when an operation runs at this work center.
- **Subcontract** — Toggle on if this work center represents an external supplier slot. When on, the **Default Partner** field becomes required.
- **Active** — Uncheck to retire the work center while preserving history on existing routings.
4. Click **Save**.

On the **Work Centers** list, the **filter button** beside the search box narrows by **Capacity**, **Calendar**, **Subcontract**, **Active** or a **Resources**, **Efficiency** or **Rate / hr** range ([Working with lists](../getting-started/working-with-lists.html#narrowing-the-list)).

## Capacity Types

The capacity type determines how the scheduler counts time on a work center:

| Type        | What it counts                                                                                                               | When to use                                                               |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| **Machine** | Machine-hours; _Resources_ is the number of identical machines in the bucket                                                 | A single CNC mill, a press brake, a paint booth                           |
| **Labor**   | Operator-hours; _Resources_ is the headcount of the crew                                                                     | An assembly cell, a packing line, a QC bench                              |
| **Both**    | Machine and labor counted independently. Operations consume from both pools and are scheduled against the binding constraint | A paint booth that needs one machine _and_ two operators at the same time |

For **Both**, fill in the separate **Machine Resources** and **Labor Resources** counts so the scheduler can size each pool independently.

## Capacity Math

Available capacity for a given date is computed in three steps:

1. **Base hours from the calendar.** Sum the duration of all open windows on that weekday — e.g. `08:00–12:00` plus `13:00–17:00` is 8 base hours.
2. **Apply any exception.** If a calendar exception or a work-center-specific exception covers the date, it replaces the base windows (a _Closure_ exception zeroes the day; an _Override_ exception swaps the windows for custom hours).
3. **Multiply by resources and efficiency.**
```
   Capacity hours = Base hours × Resources × Efficiency
```
   For **Both** work centers, machine and labor capacity are computed separately and the smaller of the two is the binding constraint.

### Example

A CNC mill with one machine, an efficiency factor of 0.92, on a regular Monday in the Standard 8-5 calendar:

```
Capacity hours = 8 × 1 × 0.92 = 7.36 hours
```

If a public holiday closes the calendar for that Monday, the day's capacity becomes `0` regardless of resources or efficiency.

<a id="calendars"></a>

## Calendars

Calendars describe the recurring weekly availability pattern that work centers are scheduled against. Most organizations define a small set of canonical calendars and point many work centers at the same one. Examples:

- **Standard 8-5** — Sunday closed; Monday–Thursday and Saturday 08:00–17:00 with a one-hour lunch (8 productive hours/day); Friday closed (Algerian weekend).
- **Two-shift 16-hour** — Monday–Saturday with two 8-hour shifts (06:00–14:00 and 14:00–22:00).
- **24/7 continuous** — All days, 00:00–24:00.

To create or edit a calendar, navigate to **Manufacturing > Calendars** and use the **New** button. The weekly pattern sits under the calendar's details, across the full width of the page: one row per day (Sunday → Saturday), with start/end time pickers for each working window. Use **Add window** to split a day into multiple shifts (for example, a morning and afternoon block around lunch), the **×** button to remove a window, and **Open day** to start hours for a closed day. Three one-click presets sit above the grid:

- **Standard 8-5** — Sun + Fri closed; Mon–Thu and Sat 08:00–12:00 and 13:00–17:00.
- **24/7** — every day open 00:00–23:59.
- **Clear all** — every day closed (useful as a starting point for fully custom hours).

The header above the grid summarises how many days are open and the total weekly hours so you can sanity-check the pattern as you build it.

The **Timezone** field is a dropdown of region-based timezones (e.g. _Africa/Algiers_, _Europe/Paris_). It defaults to _Africa/Algiers_ on new calendars and is the timezone the weekly pattern's `08:00–17:00` windows are interpreted in. Always pick a region zone — fixed offsets like _GMT+1_ would not handle daylight-saving transitions.

The **Default** flag identifies the fallback calendar used when a work center is created without an explicit calendar choice. There can be at most one default per organization.

The **Calendars** list filters by **Default** and **Active**; the **Calendar Exceptions** list by **Type**, **Calendar**, **Work Center**, **Active**, **Priority** or a **Start** / **End** date range — the same filter button as every other list ([Working with lists](../getting-started/working-with-lists.html#narrowing-the-list)).

## Calendar Exceptions

Exceptions are date-specific overrides that overlay the recurring calendar:

- **Closure** — The work center is unavailable for the date range. Use for public holidays, planned maintenance, and unplanned downtime.
- **Override** — Replaces the recurring calendar's windows for the date range with custom windows. Use to open a normally-closed Friday for a year-end push, or to reduce a normal day to a half-shift.

Exceptions can be scoped to a calendar (every work center sharing that calendar) or to a single work center (overriding what the calendar would otherwise say). Work-center-specific exceptions take precedence over calendar-scoped ones on the same date. When two exceptions of the same scope cover the same date, the higher **Priority** wins.

To add an exception, navigate to **Manufacturing > Calendar Exceptions** and click **New**. Fill in:

- **Calendar** _or_ **Work Center** — Both pickers are on the form and naming one clears the other, because an exception hits exactly one of the two. Targeting a calendar applies to every work center using it; targeting a work center overrides only that one.
- **Start / End Date** — The inclusive date range affected.
- **Type** — `Closure` or `Override`.
- **Working windows** _(Override only)_ — The section appears once you pick **Override**. Add one row per shift using the time pickers (e.g. one `06:00–22:00` row for a 16-hour overtime day, or `08:00–12:00` plus `13:00–17:00` for a normal split shift). The same windows apply to every day in the range. Inline errors flag end-before-start or overlapping windows before you can save.
- **Priority** — Higher numbers win when multiple exceptions overlap. Defaults to 100.
- **Reason** — Free-text explanation surfaced in the scheduler tooltip (e.g. "Eid al-Fitr 2026", "Quarterly maintenance").

## Capacity Preview

To check how many hours a work center has available over a date range — for example to confirm that a planned production run will fit — use the **Capacity** view on the work-center detail page. The view returns a day-by-day breakdown showing base hours, applied exceptions, and final capacity hours.

## Load Tab

The **Load** tab on each work center shows what's already committed to that resource over time. Available capacity (the grey bar) is what the calendar offers; committed (the blue bar) is what the scheduler has already slotted in. Pick **Day** for a 30-day overview or **Hour** for the next 48 hours. Click any bar to see exactly which work orders contribute to that bucket.

When the committed bar runs red — taller than the available bar — that bucket is over-committed: a calendar exception was added after work was scheduled, and the shop now owes more time than it has. Re-schedule the affected WOs from the [Scheduler](scheduling.html) page to flush the over-commit.

## Common Pitfalls

- **Setting `Subcontract` without a default partner.** A subcontract work center represents an external supplier slot, so it must be linked to one. The save will be rejected until you pick a **Default Partner**.
- **Forgetting to update efficiency.** A new work center starts at `1.00` (100% efficient). Real production rarely sustains that. Adjust to your observed long-run output once you have a few months of data.
- **Inactivating a work center referenced by an active routing.** Inactivating preserves history (existing work orders still reference the work center), but new routings cannot select it and the scheduler refuses to plan against it. If you need to retire a work center temporarily, use a calendar exception instead.
- **Putting public holidays on the wrong calendar.** A holiday that affects every shop in the organization should be a calendar-scoped exception, not a work-center-scoped one — otherwise you'll have to recreate it for every work center.

Source: https://docs.beelocity.com/en/manufacturing/work-centers/index.mdx
