Resource dependencies & substitutes
Evaluate bookings that depend on more than one resource and discover allowed replacement choices. A machine may need an operator; a primary room may have a configured substitute when capacity is unavailable.

What you configure
- profiles.dependencies
- List required companion resources and consumed units.
- profiles.substituteIds
- Define the replacements your application permits.
- evaluateBooking / findSubstitutes
- Evaluate the proposed interval, units, and requirements.
Integration code example
- Keep dependent-resource IDs consistent with the resource directory.
- Provide the booking interval and requirements to the licensed planner.
- Explain decision issues and let your application choose whether to apply a suggested substitute.
Copy this TypeScript into your application, not the browser console. Replace YOUR_WTS_LICENSE_KEY with an entitlement issued for your deployment origin. A WTS license is not a Google, Microsoft or CalDAV credential. These examples are documentation only and never execute on this page.
npm install @wts-calendar/coreimport { verifyCalendarLicense } from '@wts-calendar/core';
import { AdvancedResourcePlanner } from '@wts-calendar/core/advanced-resource-planning';
const license = await verifyCalendarLicense('YOUR_WTS_LICENSE_KEY');
const planner = new AdvancedResourcePlanner({
license,
timeZone: 'UTC',
resources: [
{ id: 'design', title: 'Design studio', capacity: 2 },
{ id: 'engineering', title: 'Engineering', capacity: 4 },
],
events: [
{
id: 'review',
title: 'Design review',
resourceId: 'design',
start: '2026-09-07T09:00:00Z',
end: '2026-09-07T10:30:00Z',
},
],
profiles: [
{
resourceId: 'design',
dependencies: [{ resourceId: 'engineering', units: 1 }],
substituteIds: ['engineering'],
},
],
});
const request = {
resourceId: 'design',
start: '2026-09-07T09:30:00Z',
end: '2026-09-07T10:00:00Z',
units: 2,
};
export const decision = planner.evaluateBooking(request);
export const alternatives = planner.findSubstitutes(request);
console.log(decision.allowed, decision.issues, alternatives);Application responsibilities
The engine returns data, not a built-in chart. Render results in your application and call planner.setData() after resources, events or profiles change.
Evaluations do not reserve capacity or automatically reassign events. Recheck and commit through your application after the user chooses an alternative.
Behavior and lifecycle
- Availability, shifts, requirements, dependencies, and capacity are evaluated together.
- Allowed substitutes are ranked by projected utilization and then stable resource ID.
Limits and responsibilities
- Finding a substitute does not automatically modify calendar events or reserve resources.
- Coordinate final multi-resource reservations through your application's authoritative transaction logic.
Enable this capability
- Optional module
- @wts-calendar/core/advanced-resource-planning
- Signed entitlement
- advanced-resource-planning
Request the required features and deployment origins by email. Pricing and terms are confirmed privately. A WTS license is separate from provider credentials; do not send passwords or production access tokens.
Email for a license key →This public guide does not execute Premium modules or collect license tokens.