Production Scheduling for Liquid Vial / Small Volume Parenteral Fill-Finish

Learn how to model and schedule liquid vial / small volume parenteral fill-finish operations in Schantt, from wash and depyrogenation through to labelling, with support for aseptic and terminal-sterilisation routings across three product classes.

Production planners and operations managers at pharmaceutical contract manufacturers and drug producers running liquid vial fill-finish lines need a scheduling system that handles divergent product-class routings, asymmetric changeovers on the binding filling isolator, and a mix of flow and batch processing stages. This guide shows how to configure Schantt for a multi-product liquid vial / small volume parenteral fill-finish operation, model three product classes with different routings, and produce a realistic campaign schedule that accounts for every transition and constraint.

This guide follows a fictional composite company built from industry research on liquid vial / small volume parenteral fill-finish; all names, parameters, and figures are illustrative.

Industry context

Liquid vial fill-finish — also referred to as small volume parenteral (SVP) filling — is a aseptic compounding and filling process that produces sterile injectable drug products in glass vials ranging from 2 mL to 100 mL. The process combines continuous-flow operations (washing, filling, capping, inspection, labelling) with optional batch steps (terminal sterilisation), and must satisfy stringent regulatory requirements for environmental monitoring, sterility assurance, and cleanroom classification. Products vary widely in potency, container format, and sterility assurance strategy, which drives divergent process routes across the same physical line.

A CMO or mid-market manufacturer operating such a line typically serves 6 to 12 pharmaceutical customers annually, running 4 to 6 campaigns per month across 3 to 5 concurrent customers. Each campaign represents a single product batch with its own set of validated parameters — throughput rates, changeover protocols, sterility hold requirements, and packaging specifications. The filling isolator is the binding capacity constraint on the line, and the longest transitions are those between potency tiers, which require extended cleaning and environmental monitoring.

The facility runs a standard two-shift pattern Monday through Friday (06:00 to 22:00), with an optional extended Saturday shift for automated visual inspection. Planned downtime events — media fills for line requalification, annual preventive maintenance, and facility-wide HEPA recertification — must be factored into any realistic schedule.

Aptis Biofill runs approximately 110 people at a 5,800 m² facility, manufacturing three product classes across six production stages, scheduled by a small planning team. If your product requires lyophilisation after filling, see the dedicated guide for lyophilised vial fill-finish.

Process overview

The liquid vial fill-finish process consists of six production stages with two routing variants depending on the product's sterility assurance strategy.

flowchart LR
    WD["Wash and depyrogenation"]
    F["Filling"]
    C["Capping"]
    A["Autoclave (terminal sterilisation)"]
    I["Visual inspection"]
    L["Labelling and packaging"]

    WD --> F --> C
    C --> A --> I
    C --> I
    I --> L

The liquid SVP fill-finish flow has two routing variants: aseptic (capping → visual inspection, skipping the autoclave) and terminal sterilisation (capping → autoclave → visual inspection).

Potent / HPAPI products using ready-to-use pre-sterilised vials skip the wash and depyrogenation stage and enter the process at the filling isolator. The dataset models this by giving the potent class a routing that begins at the filling stage.

Scheduling challenges and how Schantt handles them

For a CMO like the one in this scenario, the schedule is driven by confirmed campaign commitments from pharmaceutical customers — each campaign is a firm job with a known product, quantity, and customer delivery expectation. The sequence of campaigns is set by the planning team based on commercial agreements and potency segregation requirements. (If your plant operates with a different demand driver — make-to-stock production or a dedicated product line — the model adapts; the optimisation objective remains the same.)

Schantt minimises total production time by exploring how jobs are assigned to machines and how they are sequenced, scheduling forward from a start date you set. This guide assumes a practical horizon of one month (4 to 6 campaigns).

Schantt offers two scheduling modes. Auto mode optimises both the sequence of jobs and their machine assignments. Semi-Auto mode preserves your fixed campaign order — essential when customer commitments or potency rules dictate the sequence — while optimising machine assignments within that order. Semi-Auto is the primary mode for this scenario because a CMO's campaign order is largely determined by customer agreements and containment protocols, not freely optimisable.

What Schantt handles well

  • Per-class routing with stage skipping — Potent products using ready-to-use vials skip the wash and depyrogenation stage, while standard injectables and vaccine products traverse the full route through all six stages.

  • Flow stages with throughput / line speed — The filling isolator, capping machines, automated visual inspection machines, and the labeler each operate at a continuous rate. Schantt derives each operation's duration from the job quantity and the machine's line speed.

  • Batch stages with batch capacity and cycle time — For the terminal-sterilisation route, autoclaves process sealed vials in fixed-size chamber loads on a fixed cycle. Schantt computes the total dwell from batch capacity, cycle duration, and total quantity.

  • Directional changeover / setup times — Transitioning between product classes on the filling isolator takes different amounts of time depending on which class is ending and which is starting. Schantt accounts for this directional asymmetry in every schedule it produces.

  • Multi-machine stages — The capping and visual inspection stages each have two parallel machines. Schantt assigns jobs across the available machines at each stage to balance load and minimise total production time.

  • Semi-Auto mode for fixed-sequence optimisation — The planner sets the campaign order based on customer commitments and potency requirements. Schantt optimises machine assignments and precise timing within that fixed order.

How Schantt handles each challenge

1. Filling isolator as the binding bottleneck.
- The filling isolator runs at 9,000 to 12,000 vials per hour depending on the product class, while each downstream stage has roughly double the combined throughput — two cappers at 12,000 vials per hour each, two visual inspection machines at 12,000 vials per hour each, and a labeler at 15,000 vials per hour. The filling isolator governs the schedule.
- Schantt models each stage's machine count and per-machine throughput or batch capacity. When a stage has multiple machines, the system automatically considers all of them when assigning jobs. Because the downstream stages outpace the filler, the schedule's timing is driven by filling duration and the changeover time between campaigns on the filling isolator — downstream operations follow with minimal queuing.

2. Divergent routings with stage skipping.
- Potent / HPAPI products arrive as ready-to-use pre-sterilised vials and skip the wash and depyrogenation stage entirely. The vaccine and standard injectable classes use conventional vials that require washing, so they pass through all preceding stages. This means three product classes share the filling isolator and downstream stages but arrive at different points in the process.
- Schantt's per-class routing lets you define exactly which stages each product class visits. A stage absent from a class's routing is simply skipped — no operation is created for it, and no Gantt row appears. A transfer time bridges directly from the stage before the skipped span to the stage after it, so the handoff delay is still applied at the correct point.

3. Mixed batch-and-flow physics in terminal sterilisation.
- Standard injectable products follow a route that includes a batch autoclave stage between capping and visual inspection. The autoclave processes vials in chamber loads of 12,000 vials on a 45-minute cycle, which introduces a fundamentally different timing pattern compared to the flow stages before and after it. The downstream visual inspection machines (each 12,000 vials per hour) can easily keep pace with the autoclave output, but the batch rhythm means material arrives in discrete pulses rather than a continuous stream.
- Schantt supports both batch and flow stage types in a single routing. For the autoclave, you set a batch size of 12,000 vials and a cycle duration of 45 minutes; the system computes the total duration as the number of cycles (quantity divided by batch size, rounded up) multiplied by the cycle duration. The flow stages use throughput rates. The schedule automatically chains each downstream operation to its upstream completion plus the transfer time, and the scheduler accounts for the batch-and-flow handoff correctly — waiting for enough material to accumulate before starting the autoclave cycle.

4. Directional and asymmetric changeover durations.
- Transitioning between product classes on the filling isolator is highly asymmetric. A same-class changeover takes 30 minutes. Switching between standard injectables and vaccine products takes 240 minutes in either direction. But switching between any potent class and any non-potent class takes 720 minutes — a full 12-hour cleanout that includes cleaning, disinfectant contact time, and an environmental monitoring dark period. The direction does not matter for potency transitions, but the sheer magnitude makes it the single most time-consuming scheduling decision.
- Schantt models changeovers as a directional, per-machine matrix — you enter the time from each product class to every other class on each machine. When the system evaluates a schedule, it adds the appropriate changeover time between consecutive jobs on the same machine. In Semi-Auto mode, the planner's campaign order is fixed, but the system still schedules the exact changeover duration between each pair of consecutive campaigns, so the total transition time is computed accurately and visible on the Gantt as a labelled segment ahead of each operation's processing bar. This lets the planner see, before committing the schedule, exactly how much time is consumed by transitions between campaigns.

5. Quality hold as a manual timeline component.
- After the fill-to-label process completes, every parenteral product must undergo a 14-day sterility hold per pharmacopoeial requirements (USP ⟨71⟩ / Ph. Eur. 2.6.1), plus 1 to 5 days of concurrent quality-control testing, bringing the total release timeline to 16 to 24 calendar days from campaign start. This quality hold is a manual buffer that sits outside the scheduled fill-to-label timeline.
- Schantt does not manage quality hold or batch release events. The schedule covers only the fill-to-label window — from wash and depyrogenation through to labelled and packaged vials. The planner adds the 14-day sterility hold and QA testing time manually when communicating the expected release date to the customer. This is clearly communicated: the schedule's total duration represents fill-to-label time only, and the planner adds the quality hold duration to get the full release timeline.

What to model in Schantt

The entities below are the building blocks you create in Schantt to represent this liquid vial fill-finish operation.

Entity Count Notes
Stages 6 Wash and depyrogenation (flow), Filling (flow), Capping (flow), Autoclave — terminal sterilisation (batch), Visual inspection (flow), Labelling and packaging (flow)
Machines 9 One wash tunnel, one filling isolator, two cappers, two autoclaves, two automated visual inspection machines, one labeler
Product classes 3 Standard injectables, Potent / HPAPI injectables, Vaccine injectables
Products 3 One representative product per class — 20,000 vials (10R), 10,000 vials (10R), 50,000 vials (2R)
Calendars 2 Standard two-shift Monday–Friday (06:00–22:00); extended calendar for visual inspection with optional Saturday shift (06:00–14:00)

Sub-configuration objects — per-class routings, transfer times, changeover matrices, calendar exceptions, and machine downtimes — are configured on the detail pages of the entities above and are covered in the step-by-step setup that follows.

Step-by-step setup

Follow these steps in Schantt to build the model. The order follows the in-product dependency chain — each step assumes the previous entities exist.

1. Create the stages. Add the six stages in process order: Wash and depyrogenation, Filling, Capping, Autoclave (terminal sterilisation), Visual inspection, Labelling and packaging. Set the production type for each stage — Autoclave is a batch stage; all others are flow stages. On each stage's detail page, define the transfer times between consecutive stage pairs:

  • Transfer times: 5 minutes between each stage pair — from wash to filling, filling to capping, capping to autoclave (terminal-sterilisation route), capping to visual inspection (aseptic route), autoclave to visual inspection, and visual inspection to labelling. These are conveyor-coupled or room-to-room handoffs, consistent across routings.

2. Add the machines to each stage. Assign one machine per stage where the line has a single asset, and two machines for capping and visual inspection:

  • Single-machine stages: Wash tunnel (wash and depyrogenation), Filling isolator (filling), Labeler (labelling and packaging)
  • Two-machine stages: Capper 1 and Capper 2 (capping), Autoclave 1 and Autoclave 2 (terminal sterilisation), Inspection machine 1 and Inspection machine 2 (visual inspection)

3. Create the product classes and define their routings. Create three product classes — Standard injectables, Potent / HPAPI injectables, and Vaccine injectables. On each class's detail page, define the routing by selecting the stages the class passes through in order:

  • Standard injectables: Wash and depyrogenation → Filling → Capping → Autoclave (terminal sterilisation) → Visual inspection → Labelling and packaging (6 stages, full terminal-sterilisation route)
  • Potent / HPAPI injectables: Filling → Capping → Visual inspection → Labelling and packaging (4 stages, aseptic route — skips wash and depyrogenation and autoclave; enters at the filling isolator)
  • Vaccine injectables: Wash and depyrogenation → Filling → Capping → Visual inspection → Labelling and packaging (5 stages, aseptic route — skips the autoclave)

No partial transfers are needed — each class moves forward in full campaign quantity with no overlapping handoffs between stages.

4. Add one product per class. Create three products, each assigned to its product class:

  • Product A (mAb biologic): 20,000 vials, 10R format — standard injectables class
  • Product C (oncology HPAPI): 10,000 vials, 10R format — potent / HPAPI class
  • Product D (inactivated-virus vaccine): 50,000 vials, 2R format — vaccine injectables class

5. Set machine capacity parameters and changeovers. On each machine's detail page, configure the throughput or batch capacity and the changeover times between product classes. These settings require the product classes to exist first (step 3).

  • Throughputs (flow stages):
  • Wash tunnel: 20,000 vials per hour (standard injectables, vaccine injectables)
  • Filling isolator: 10,000 vials per hour (standard injectables), 9,000 vials per hour (potent / HPAPI), 12,000 vials per hour (vaccine injectables)
  • Capper 1 and Capper 2: 12,000 vials per hour each, all product classes
  • Inspection machine 1 and 2: 12,000 vials per hour each, all product classes
  • Labeler: 15,000 vials per hour, all product classes

  • Batch capacity (autoclaves):

  • Autoclave 1 and Autoclave 2: 12,000 vials per cycle, 45-minute cycle (standard injectables only)

  • Changeover durations on the filling isolator:

  • Same-class changeover: 30 minutes (any product class to itself)
  • Standard injectables ↔ Vaccine injectables: 240 minutes (both directions)
  • Potent / HPAPI ↔ any non-potent class: 720 minutes (both directions)

Changeover times on other machines are short and symmetric — 45 minutes on each capper, 20 minutes on each inspection machine, 15 minutes on the labeler, and 30 minutes on the wash tunnel — and can be configured as a single value per machine.

6. Configure calendars, exceptions, and downtimes (optional, last step). Set the team default calendar to the standard two-shift pattern (Monday to Friday, 06:00 to 22:00). Create a second calendar for the visual inspection machines with an extended Saturday shift (06:00 to 14:00). Then add calendar exceptions — New Year's Day (January 1), International Workers' Day (May 1), and a year-end shutdown (December 29 to January 2). Finally, add planned downtimes: a media-fill requalification event (8 hours), the filling isolator's annual preventive maintenance (2.5 days), and a factory-wide HEPA recertification (24 hours).

For step-by-step instructions on configuring each of these in Schantt, see the Schantt documentation.

Common mistakes

1. Using a single blanket changeover duration instead of per-pair directional values. A single changeover time applied to all product-class transitions ignores the difference between a 30-minute same-class changeover and a 720-minute potent-to-standard cleanout. This produces a schedule that underestimates transition time by hours per campaign. Fix: Enter the full directional matrix on the filling isolator — every from-class to to-class pair, even the same-class entries — so the system accounts for the actual duration of each transition.

2. Defining one product class for products with different routings. If you place standard injectables and potent HPAPIs in the same product class, both would follow the same routing — wasting the potent class's ability to skip wash and depyrogenation. Fix: Create separate product classes whenever a routing difference exists, even if the products are otherwise similar. This guide's three classes reflect three distinct process routes.

3. Setting a machine count per stage that does not match the physical line. If you model one capper or one autoclave when the floor has two, Schantt will incorrectly schedule all jobs through that single machine — overestimating duration and creating false bottlenecks. Fix: Count the actual machines on the floor and create one machine in Schantt for each. For parallel machines with identical throughputs, the system distributes jobs across them automatically.

4. Applying the same calendar to all machines when a stage runs on a different shift pattern. The visual inspection machines in this scenario run on an extended calendar with Saturday hours, while the rest of the line runs Monday to Friday only. Using the default calendar for the inspection machines would lose a full shift of available production time each week. Fix: Create a separate calendar with the extended hours and assign it to the affected machines on their detail page.

5. Overlooking the quality hold when communicating release dates to customers. A fill-to-label schedule that completes in three days is not a release-ready product — the 14-day sterility hold and 1 to 5 days of QC testing are separate manual phases. Fix: Always add the quality hold duration to the schedule's fill-to-label completion date when communicating the expected product release date to the customer or the commercial team.

What a good schedule looks like

A well-configured model in Schantt transforms the scheduling process from manual estimation to data-driven precision, especially when managing four to six campaigns of varying potency and routing complexity.

Before (manual spreadsheet scheduling): The planning team sequences campaigns by hand, using estimated durations and a single blanket changeover figure for all transitions. The exact cumulative changeover time across the full campaign sequence is unknown until the schedule is committed. A potent-to-standard transition that should take 720 minutes is often estimated at the average changeover time, meaning the schedule undershoots by hours. There is no visibility into which machine at a multi-machine stage should run which campaign, so the planner assigns machines manually or uses a first-available heuristic.

After (Schantt Semi-Auto mode):
- Every campaign's fill-to-label duration is computed from the product's routing, the assigned machine's throughput or batch capacity, and the correct directional changeover time between consecutive campaigns — no estimation, no averages.
- The total changeover time across all transitions is visible in the schedule summary and on the Gantt, where each transition appears as a labelled segment ahead of the processing bar. The 720-minute potent-to-standard cleanout is clearly visible as a full-shift pause between campaigns.
- Machine assignments at multi-machine stages — capping and visual inspection — are optimised by the system, distributing jobs across parallel machines to minimise total completion time while respecting each machine's calendar and throughput.
- The planner's fixed campaign order (potent last in the sequence to avoid repeated high-duration cleanouts) is preserved, and the system schedules around that constraint.
- The total timeline from the first campaign start to the last labelling completion is computed in working hours and calendar days, giving the planner a precise fill-to-label window. Adding the 14-day sterility hold and QC time provides the full release timeline for customer communication.

Ready to schedule your own facility?

Try Schantt free — no credit card required. Go from spreadsheet to optimized Gantt chart in 60 minutes.

Try Schantt Free