Unsupported Features
This document covers playbook features the Fluent SDK doesn't yet support. For each limitation you'll find what works, what doesn't, and what needs to be handled directly in Workflow Studio. Whenever a limitation applies, see Handling Unsupported Features at the bottom — it covers how to look up the playbook and provide a direct Workflow Studio link.
Table of Contents
- Activities
- Optional Activities
- Variants
- Trigger Limitations
- Public Access
- Playbook and Lane Permissions
- Custom Process Type
- Legacy Schema Version
- Launcher Configuration
- Handling Unsupported Features
Activities
All activity types from ActivityDefinitions.Core.* are supported. Questionnaire activities and any definitions outside the Core set are not supported.
If a playbook includes an unsupported activity, the rest of the playbook can still be generated — ActivityDefinitions.Core.Placeholder can be used as scaffolding in place of the unsupported activity, which you can then replace in Workflow Studio. When transforming an existing playbook that already contains unsupported activities, the transform falls back to the Record API rather than generating a PlaybookDefinition.
Creating a playbook with a Questionnaire activity: Use ActivityDefinitions.Core.Placeholder as scaffolding in place of the Questionnaire activity. The Placeholder can be swapped for the Questionnaire activity directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Creating a playbook with a non-Core activity definition: Use ActivityDefinitions.Core.Placeholder as scaffolding in place of the unsupported activity. Only built-in ActivityDefinitions.Core.* definitions are supported. The Placeholder can be replaced with the correct activity type directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Transforming an existing playbook with Questionnaire or non-Core activity records: The transform falls back to the Record API — a PlaybookDefinition cannot be generated. This playbook must be managed directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Optional Activities
An activity's start rule controls when it begins. The Fluent SDK supports wfa.playbook.run.Immediately() and wfa.playbook.run.After(...), but not wfa.playbook.run.Manually() — an optional activity that only starts when a user manually advances it. When transforming an existing playbook that contains an optional activity, the transform falls back to the Record API rather than generating a PlaybookDefinition.
Transforming an existing playbook with an optional activity: The transform falls back to the Record API — a PlaybookDefinition cannot be generated. This playbook must be managed directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Variants
Playbook variants allow a single playbook to behave differently at runtime based on conditions — for example, routing to different lanes depending on record data. Variants are stored as related sys_pd_process_variant records, and the Fluent SDK cannot generate or represent them. The evaluate_variant_children_after field on the playbook config, which controls variant evaluation order, is also unsupported.
If a playbook requires variants, the scaffolding can still be generated — variants just need to be configured separately in Workflow Studio. Transforming an existing playbook that already has variant records is not possible.
Creating a playbook with variants: The scaffolding can be generated without variant definitions. Variants need to be configured directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Transforming an existing playbook with variant records: The transform falls back to the Record API — a PlaybookDefinition cannot be generated. This playbook must be managed directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Trigger Limitations
Unsupported Trigger Types
Four trigger types are supported:
| Supported |
|---|
PlaybookTriggerTypes.RecordCreate |
PlaybookTriggerTypes.RecordUpdate |
PlaybookTriggerTypes.RecordCreateOrUpdate |
PlaybookTriggerTypes.Scheduled |
Any other trigger type — such as on demand — is not supported. If a use case requires a different trigger type, a Flow Designer flow may be a better fit.
Public Access
Public access controls whether a playbook can be triggered without authentication. The Fluent SDK cannot generate or modify playbooks that have public_access enabled — and unlike permissions or variants, this is a hard limit. Public access must be set at playbook creation time and cannot be enabled afterward, even in Workflow Studio. Public playbooks must be created directly in Workflow Studio.
An existing playbook with public access enabled: The Fluent SDK cannot manage this playbook. Public access configuration must be managed directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Creating a new public playbook: Public access must be configured at creation time and cannot be enabled after the fact. The playbook must be created directly in Workflow Studio.
Playbook and Lane Permissions
Custom permission configuration on a playbook or lane — anything other than the default empty {} — cannot be represented by the Fluent SDK. This applies to both the PlaybookDefinition config and wfa.playbook.lane() config.
This limitation doesn't block the whole playbook. A playbook can still be generated without the permission configuration, and permissions can be added in Workflow Studio afterward. The exception is transforming an existing playbook that already has custom permissions set — the transform falls back to the Record API rather than generating a PlaybookDefinition.
Creating a playbook with custom permissions: The playbook can be generated without the permission configuration. Permissions need to be configured directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Modifying an existing .now.ts file to add or change permissions: All other requested changes are applied. The permission modification is skipped — custom permission configuration must be set directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Transforming an existing playbook with custom permissions: The transform falls back to the Record API — a PlaybookDefinition cannot be generated. This playbook must be managed directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Custom Process Type
Only the default Standard process type is supported by the Fluent SDK. Process type is a one-time decision — it's set when a playbook is created and cannot be changed afterward, even in Workflow Studio. Playbooks with a non-Standard process type must be created directly in Workflow Studio from the start.
Creating a playbook with a custom process type: The Fluent SDK cannot generate this playbook. Process type is set at creation time and cannot be changed afterward, so it must be created directly in Workflow Studio.
An existing playbook with a custom process type: Only Standard playbooks can be generated or modified by the Fluent SDK. This playbook must be managed directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Legacy Schema Version
The Fluent SDK was introduced with schema version 3. Playbooks with a schema_version below 3 predate the SDK entirely — their format is not understood and cannot be safely read or modified. Opening one of these playbooks in Workflow Studio will automatically migrate it to the current schema version.
Editing a playbook with a legacy schema version: The playbook cannot be read, generated, or modified through the Fluent SDK. Opening it directly in Workflow Studio will automatically migrate it to the current schema version. See Handling Unsupported Features for the designer link.
Launcher Configuration
Launcher configuration controls how a playbook appears in the playbook launcher — fields like the launcher title, description, whether to show the record form, the record form view, and template fields. These fields (launcherTitle, launcherDescription, launcherShowRecordForm, launcherRecordFormView, launcherTemplateFields) are not supported by the Fluent SDK and must be configured directly in Workflow Studio. This is also referred to as "on demand trigger" configuration in Playbook Designer.
The rest of a playbook can still be generated — launcher configuration just needs to be set in Workflow Studio afterward.
Configuring launcher settings on a new or existing playbook: The playbook can be generated or modified as requested, skipping the launcher configuration. Launcher settings (title, description, record form settings, template fields) can be configured directly in Workflow Studio. See Handling Unsupported Features for the designer link.
Handling Unsupported Features
Some unsupported features are partial limitations — the playbook can still be generated without the unsupported feature, which can then be configured in Workflow Studio. Others are hard limits where no Fluent file can be produced:
- Public access — must be set at playbook creation time and cannot be enabled afterward, even in Workflow Studio.
- Custom process type — process type is set at creation time and cannot be changed afterward, even in Workflow Studio.
- Transforming an existing playbook with unsupported features — a playbook that contains custom permissions, variants, unsupported activities, or an optional activity falls back to the Record API rather than generating a
PlaybookDefinition. - Legacy schema version — the schema predates the Fluent SDK entirely and cannot be safely read or modified.
When a limitation requires completing configuration in Workflow Studio, a direct link can be provided to take the user there.
Opening a playbook in Workflow Studio
Playbooks can be opened directly in Workflow Studio using a link that requires the ServiceNow instance URL and the playbook's sys_id. The sys_id can be found by querying sys_pd_process_definition by display name, or in the generated keys file if the playbook was built from a .now.ts file. The link follows this pattern:
https://<instance>/now/workflow-studio/builder?table=sys_pd_process_definition&sysId=<sys_id>&