xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField SalesCRMRewardsClaimsInventoryProcurementWarehouse ManagementField ServiceServiceSupportTelephony & MessagingFinance & AccountingPayrollExpense ManagementCommercePortalsAnalytics & ReportingData StudioMobile AppSee all products →
PLATFORM
Platform overviewApp BuilderAutomationIntegrationsSecurity & GovernanceChange ManagementDevelopers
SENSE AI
Sense AI overviewSense AssistSense ControlSense VisionAI StudioTrust & governanceIn Claude & ChatGPTUse cases
SOLUTIONS
FMCG & DistributionManufacturing & Dealer NetworksAutomotive & DealershipsPharma & HealthcareConsumer DurablesAgri-InputsBuilding MaterialsService NetworksWarehousing & 3PLFinancial AccountingERP SoftwareIndia GST ComplianceUAE VAT & e-InvoicingSaudi ZATCA & VATAll solutions →
RESOURCES
Knowledge CenterDeveloper & CLIBlogGuidesWhat is xMatix?Company facts
COMPANY
AboutCareersPartnersEventsContactAuthorsLegal
Sign in Request demo
Home/Docs/Service/Running service campaigns
HOW-TO · Last reviewed

Running service campaigns

A service campaign turns a target population into service work: rules decide who is in (the members — accounts or assets), campaign items decide what is offered or mandated, and a set of processing actions generate the downstream records — leads, opportunities, asset maintenance entries, and due-date reminder leads for contracts and maintenance schedules. Recalls, free-service drives and contract-renewal reminders all run on this one mechanism.

Prerequisites

  • A campaign record in the Service app, active, with a start–end window covering today — every processing action checks both. The campaign's Status picklist (Draft, Start, In Progress, On Hold) is descriptive only; no processing action reads it.
  • Access to the Service Campaign entity and its server actions through your security profile. The six Process actions, Transfer Members and Execute Campaign are server actions and can be granted or withheld individually; the two wizards also need their app pages (Transfer Members, Execute Campaign) granted and placed in an app's navigation.
  • Member rules (for rule-built member lists) or hand-entered members. Dynamic Member Type must be Field Filter: the Report Data option has no engine, and Process Members skips such a campaign without touching its members.
  • Campaign items, where the campaign should push specific work — each names an item, optionally an item service contract, a quantity and a mandatory flag.
  • For contract-schedule campaigns: the campaign's Service Contract (the item service contract definition) set and reminder day offsets filled. For maintenance-schedule campaigns: the campaign's Item Maintenance Schedule set.

Procedure

All Service Campaign list with 17 campaigns showing Name, Document Date, Partner Account, Branch, Type, Status, Is Active, Open Amount and audit columns
The Service Campaigns register: Type says what the campaign is for, Status is the descriptive lifecycle picklist, and Is Active is the switch every processing action actually checks — a Planned or Completed campaign can still be active, and an In Progress one inactive.UI captured
  1. 1

    Open a campaign from its Name before running any processing action; the recent chips jump back to campaigns you worked on.

  2. 2

    Type classifies the campaign (the demo tenant has extended the shipped picklist); it does not change how the processing actions behave.

  3. 3

    Status is descriptive only — no processing action reads it.

  4. 4

    Is Active is the gate: every Process action and Execute Campaign refuse an inactive campaign.

  5. 5

    Open Amount and the other amount columns summarise generated work; a high count is a reason to inspect the rules, not proof they are right.

  6. 6

    New opens the create form; Edit switches the list to inline editing.

Begin in the Service Campaigns list (Service app → Service Campaigns, or /ServiceCampaign). The register shows the document number, document date, partner account, branch, campaign type, status, active flag and open amount side by side. Both Type and Status are tenant-maintained picklists — the shipped status values are Draft, Start, In Progress and On Hold, and the demo tenant has added its own — so read Is Active rather than Status to know whether a campaign can be processed. Filter by status, window or ownership before opening a campaign; a high member or opportunity count is a reason to inspect the source rules, not proof that the population is correct. Open the campaign from its name before running any processing action.

New Service Campaign form with Name, Type, From and To Engine Series, Start and End Date, parent Service Campaign, Item Maintenance Schedule and Is Active above the Additional Details tab with Dynamic Member Type, Dynamic Member Object, Rule Success Criteria and Rule Success Custom Logic
The create form captures the campaign's identity, window and member-selection controls; keep Is Active off until the rules and items are reviewed, because every processing action is gated by it.UI captured
  1. 1

    Name is the only required field and appears as the campaign's document number in lists; Type classifies the campaign and changes no processing behaviour.

  2. 2

    From and To Engine Series are eligibility metadata for recalls — descriptive fields, not read by Process Members, which evaluates the member rules.

  3. 3

    Start Date and End Date gate every generation action except Process Members and Transfer Members.

  4. 4

    Item Maintenance Schedule is what Process Maintenance Schedule reads; the Service Contract for contract-schedule reminders is set on Details after saving.

  5. 5

    Leave Is Active off while member rules and items are still being tested.

  6. 6

    Dynamic Member Type must be Field Filter; Dynamic Member Object (Account or Asset) picks what the rules evaluate; Rule Success Criteria and Custom Logic decide how the rules combine.

Create the campaign inactive while its type, dates, member rule and success logic are being reviewed. Activation should follow a check of the resulting population, because the campaign record is the source for generated members, work and scheduled reminders.

Step 1 — Create the campaign

Create the campaign with its Name (shown as the document number in lists), Type, Start Date and End Date. On the Additional Details tab choose the Dynamic Member Object — Account or Asset — which decides what kind of member the rules select; an asset campaign's members carry both the asset and its owning account. Set Dynamic Member Type to Field Filter, pick the Rule Success Criteria, and set Is Active only when the rules are ready. The create form also offers the engine-series bounds (descriptive), a parent Service Campaign and the Item Maintenance Schedule; the campaign's Service Contract, partner account, branch, Manual Asset Action switch and the three Reminder Days Offset fields are set on the saved record's Details tab.

Service campaign Details tab showing Key Information (Name, Service Contract, Type, Status, Partner Account, Branch, Manual Asset Action, Budget) and Additional Information (Is Active, Start Date, End Date, Dynamic Member Object, Dynamic Member Type, Rule Success Criteria, Rule Success Custom Logic, Item Maintenance Schedule, Reminder Days Offset 1-3)
Details is where the processing actions read their inputs: the active flag and date window that gate every run, the member object and type that drive Process Members, the rule-success controls, and the contract, maintenance schedule and reminder offsets the schedule-driven actions use.UI captured
  1. 1

    Service Contract names the item service contract definition Process Contract Schedule scans for due entitlements.

  2. 2

    Manual Asset Action: off means the campaign's asset maintenance entries are pulled onto new documents automatically; on means only when a user asks the document to populate them.

  3. 3

    Is Active gates every processing action; Start Date and End Date (right) gate all of them except Process Members.

  4. 4

    Dynamic Member Object (Account or Asset) and Dynamic Member Type (Field Filter) decide what Process Members evaluates the rules against; blank member object means Account.

  5. 5

    Rule Success Criteria combines the rules; Custom Logic Is Met reads the expression in Rule Success Custom Logic.

  6. 6

    Reminder Days Offset 1–3 define the exact days-ahead at which Process Contract Schedule and Process Maintenance Schedule create reminder leads.

After saving, read the Details tab before processing. Key Information confirms name, service contract, type, status, partner account, branch, the Manual Asset Action switch and budget; Additional Information exposes the active flag, effective dates, member object and type, rule-success controls, maintenance schedule and the three reminder offsets. The header's action bar carries the processing actions themselves (administrators can relabel them — the demo shows Leads for Process Leads and a drop-down for the rest), and the status strip above the tabs is the descriptive Draft → Start → In Progress → On Hold picklist. The saved record's tabs are Rules & Members, Campaign Items, Campaign Documents and Details in the shipped layout; tenants may add more, as the demo's Marketing Execution and Approval tabs show. Read the values from this saved record — not from the create form defaults — because these are the fields the processing actions consume.

Step 2 — Define the member rules

On the Rules & Members tab, add one rule per condition: the field to test, the operation, the value, and a sequence number. The rules are evaluated against the member object chosen on the campaign (Account or Asset); the engine pushes what it can to the database and evaluates the remainder in memory, so a rule on a field the member object does not have simply matches nothing. The rule's own object type picklist is not read by the member build — the campaign's member object decides.

The Operation picklist offers Equals, Less Than, Like, Includes and Not In. In the current engine only Equals, Like and Includes evaluate as named; Less Than and Not In are not recognised by the matcher and fall back to an equality comparison, so express range and exclusion logic with the rule-success criteria and equality rules instead until that is fixed.

Rule Success Criteria combines the rules: All Rules Are Met, Always (No Criteria), or Custom Logic Is Met with a Rule Success Custom Logic expression over the sequence numbers (1 AND (2 OR 3)). The seeded Any Rules Are Met value is not recognised by the current engine and behaves as All Rules Are Met; to get "any of" behaviour, write it as custom logic with OR.

Step 3 — Add campaign items

On the Campaign Items tab, list what the campaign offers: item, item service contract where applicable, quantity, and whether it is mandatory. Mandatory campaign items are protected downstream — on a service order or opportunity generated through the campaign, a campaign-mandated line cannot have its item, contract or quantity changed (Campaign mandated items cannot be modified.) and cannot be removed (Campaign mandated items cannot be deleted.).

Service campaign record on the Campaign Items tab showing one Service Campaign Item row (Brake Pad Set, quantity 1, First Free Service Contract) with a New button, the processing actions in the header and the Draft-Start-In Progress-On Hold status strip
Campaign Items are the saved evidence of what the campaign offers or mandates: Process Opportunities copies each row into an opportunity line and Process Assets or Execute Campaign into an asset maintenance entry, so review these rows — not the header — before generating work.UI captured
  1. 1

    The header action bar carries the processing actions (labels can be shortened by your administrator — here Leads is Process Leads); the arrow reveals the rest.

  2. 2

    The status strip is the descriptive Draft → Start → In Progress → On Hold picklist; it gates nothing.

  3. 3

    Rules & Members holds the member rules and the built member list; Campaign Items is open here; Details holds the fields the actions consume.

  4. 4

    Each item row ties an item and quantity to the campaign and, when applicable, to an item service contract; open the row to set Is Mandatory.

  5. 5

    New adds a campaign item; add all of them before the first Process Opportunities or Process Assets run.

  6. 6

    Proof Of Execution Upload is an evidence surface for execution photos and videos; it is not part of item setup.

The Campaign Items tab is the saved evidence for what the campaign will offer or mandate: each child row ties an item and quantity to this campaign and, when applicable, to an item service contract. Review these rows before Process Opportunities or Process Assets — generation copies these child records, not a description in the header. The proof-of-execution uploader beneath the table is a separate evidence surface for campaign execution photos and does not replace item setup.

Step 4 — Build the member list

Run Process Members. The engine evaluates the rules against the member object and writes one campaign member per match, stamped with this run's batch; members carrying an earlier run's batch stamp are swept in the same unit of work, so the list always reflects the current rules and hand-entered members (which carry no batch stamp) survive. An inactive campaign is refused, as is one outside its date window. Members carry the account (and asset) and per-member email and messaging opt-out flags.

Step 5 — Generate the work

With members in place, run whichever generation fits the campaign:

ActionWhat it creates per member
Process LeadsA service lead with status New, linked to the campaign and member, carrying the member's account, asset, partner and branch
Process OpportunitiesA service opportunity with one line per campaign item (quantity, item service contract and the mandatory flag carried through)
Process AssetsAsset maintenance entries — one per campaign item — for members not yet utilised and not yet tied to a service order

Each run stamps its batch, and re-running soft-deletes the previous run's generated records before writing the new batch — regenerate after refining rules or items rather than editing the output by hand.

Asset maintenance entries are the campaign's pending work on each asset; they are ordinary Asset Maintenance records linked to the campaign and member, listed on the asset and in the entity's own list. They are pulled onto the next opportunity or service order raised for that asset: automatically when the campaign's Manual Asset Action flag is off, or only when a user explicitly asks the document to populate asset maintenance when the flag is on — an automatic pass never picks up manual-only campaigns and vice versa. A mandatory campaign item arrives as a protected line either way.

Step 6 — Run schedule-driven reminders

Two actions watch due dates instead of rules:

  • Process Contract Schedule — finds the asset service contracts under the campaign's service contract definition that are not utilised, whose val-till date has not passed, and whose due date falls within the reminder horizon, and creates a reminder lead per match. The three Reminder Days Offset fields define the horizon: a contract due in exactly offset 1, 2 or 3 days from today gets its first, second or third reminder lead, stamped with the reminder number.
  • Process Maintenance Schedule — the same pattern for the campaign's Item Maintenance Schedule: it reads the schedule's next-service dates and creates reminder leads for assets whose service falls due on one of the offsets.

Reminder leads land in the Lead list with a Lead Type of Contract Schedule or Maintenance Schedule, carrying the asset, the Lead Due Date, the reminder number, and the branch and partner that last serviced the asset (falling back to where it was sold) — the workshop that should make the call. These two actions do not sweep earlier batches; instead a lead is not created twice for the same asset, due date and reminder number within the campaign.

Step 7 — Execute the campaign for part of its population

Execute Campaign is a four-step wizard on its own app page (Select Campaign → Select VIN Population → Review & Confirm → Execute). Pick the campaign, filter its asset members by model year range, model and plant, tick the assets to run, and execute. Executing a member generates exactly what Process Assets would for it — one asset maintenance entry per campaign item — but for the ticked members only, and without sweeping earlier output: previously executed members keep their entries and unexecuted members simply stay Not Executed. A member's execution status is derived from whether it already has live asset maintenance entries for the campaign, so the same member is not executed twice. Failures are reported per member and the rest of the batch continues. The wizard runs under the same active and date-window gates as the Process actions.

Step 8 — Move members between campaigns when needed

Transfer Members is a second app-page wizard (Select Source Campaign → Select Target Campaign → Select Members → Review & Confirm). Choose the members as All Members, by Filter Criteria on the asset (serial number, asset, model, model year, plant), by VIN Upload of a serial-number list, or Manual ticking; the review step is a server-side preview that counts what will move, what the target already holds (matched on asset or serial number, and skipped) and, for an uploaded list, which numbers matched no member. The commit recomputes everything from live rows, so a stale preview cannot cause a wrong write. Transfer is the one campaign action that is not gated by the active flag or date window, which makes it the right tool for emptying a superseded campaign into its replacement; the only rule is that the target must be a different campaign in the same tenant.

Expected result

The campaign member list contains the current eligible population, while hand-entered members remain intact. Generated leads, opportunities and asset-maintenance rows link back to both campaign and member. Re-running Process Leads, Opportunities or Assets replaces the earlier generated batch; Execute Campaign accumulates per member; the schedule-driven actions add only reminders that do not yet exist. If counts diverge from an independent query, keep the campaign inactive and correct member rules before generating downstream records.

Common problems

"Service Campaign must be active to perform this action." Set the campaign active. Every processing action checks it.

"Service Campaign has not started yet." / "Service Campaign has ended." The date window gates all generation actions. Fix the dates or accept the campaign is over.

Process Members emptied the list. The rules matched nothing, and the sweep removed the previous run's members. Test the rules against the member object's actual field values — remembering that only Equals, Like and Includes evaluate as named — then re-run.

"Campaign mandated items cannot be modified." / "…cannot be deleted." The line came from a mandatory campaign item. That protection is the point of the flag — remove the mandate on the campaign item and regenerate if the work genuinely should be editable.

Contract-schedule processing created no leads. Check the contracts under the campaign's service contract definition: utilised contracts and contracts whose val-till date has passed are skipped, and a due date must land exactly on one of the reminder offsets from today. Contracts due outside the horizon get their leads on later runs, and a lead that already exists for the same asset, due date and reminder number is not created twice.

Maintenance-schedule processing did nothing. The campaign has no Item Maintenance Schedule, or none of the schedule's next-service dates lands on a reminder offset today. The action skips silently in the first case.

Process Members did nothing at all. Either the campaign failed the active/date gate, or its Dynamic Member Type is Report Data, which the engine skips without touching the existing member list. Switch it to Field Filter and define rules.

Common questions

What happens to members added by an earlier run?

Rule-built members are replaced: each Process Members run writes the current matches and sweeps the members carrying an earlier run's batch stamp, in one unit of work — the campaign is never left member-less between the two halves. Hand-entered members carry no stamp and are kept.

Can a customer be excluded from campaign contact?

Members carry email and messaging opt-out flags to record contact preferences. To exclude someone from the campaign entirely, shape the member rules so they no longer match, or transfer them to another campaign.

Process Assets or Execute Campaign?

Both create the same asset maintenance entries from the campaign items. Process Assets is the whole-population rebuild: it stamps a new batch and sweeps the previous one, so it fits a campaign whose member list is still being refined. Execute Campaign is for staged roll-outs — run the recall for this plant or model year first, the rest later — because it adds entries for the ticked assets only and never removes what earlier executions produced.

Should I process leads or opportunities?

Leads when the campaign's outcome is a call list — reminders and outreach that may or may not convert. Opportunities when the offer is concrete enough to carry lines: campaign items become opportunity lines, and an accepted opportunity flows into a service order with the campaign's mandated work intact.