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/Entity Reference/Service Campaign — entity reference
REFERENCE · Last reviewed

Service Campaign — entity reference

An outreach/recall campaign in the service module: it defines who is targeted (rule-built ServiceCampaignMember rows over Accounts or Assets, per dynamicMemberObject and the child ServiceCampaignRule rows) and what is offered (child ServiceCampaignItem rows), then its Process* server actions generate the downstream records - Leads, Opportunities (with lines copied from the campaign items), or AssetMaintenance rows - one per member, plus contract/maintenance-schedule reminder leads driven by the reminderDaysOffset fields. Every Process action requires the campaign to be active and (except ProcessMembers, which checks it internally) inside its start/end date window. Generated records are tagged with a per-run batch instance id and each rerun sweeps the previous run's output, so campaign output reflects the latest member set rather than accumulating.

Fields

FieldLabelTypeRequiredWhat it does
AccountIdAccountLookup
AdjustedAmountAdjusted AmountCurrency
AdjustmentIdAdjustmentLookup → Adjustment
AmountAmountDecimal
ApexJobIdApex JobText
BranchIdBranchLookup → Branch
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTimeYes
CurrencyCurrencyPickListValues: USD.
DocumentDateDocument DateDateYes
DynamicMemberObjectDynamic Member ObjectPickListWhich entity the member build targets: Account (also the default when empty) or Asset. Values: Asset, Account.
DynamicMemberTypeDynamic Member TypePickListValues: Field Filter, Report Data.
EndDateEnd DateDate
ExternalIdExternalText
FromEngineSeriesFrom Engine SeriesNumber
GeneralLedgerIdGeneral LedgerLookup
GLAccountIdGL AccountLookup
GLAmountGL AmountDecimal
IdIdGuidYes
IsActiveIs ActiveBooleanYesMaster switch for the generation actions: every Process* action validates the campaign is active (and, except ProcessMembers, within its start/end dates) before running; the services re-check the same gates when loading the campaign.
IsGLPostedIs GL PostedBooleanYes
IsGLPostingApprovedIs GL Posting ApprovedBooleanYes
ItemMaintenanceScheduleIdItem Maintenance ScheduleLookup → ItemMaintenanceSchedule
ItemServiceContractIdService ContractLookup → ItemServiceContractThe service-contract product this campaign follows up on: ProcessContractSchedule scans un-utilized AssetServiceContract rows with this itemServiceContractId falling due inside the reminder window and creates the reminder leads from them.
LeadIdLeadLookup → Lead
ManualAssetActionManualAssetActionBooleanControls when the campaign's pending AssetMaintenance items are pulled into an Opportunity or ServiceOrder for the asset: false means they are added automatically when the document is created; true means they are added only when a user explicitly triggers the populate-asset-maintenance flag on the document. The pull matches campaigns whose flag equals the invocation mode, so an automatic pass never picks up manual-only campaigns and vice versa.
ModifiedByIdModified ByLookup → UserAccountYes
NameDocument NumberTextYes
NotesNotesMultiLineText
OpenAmountOpen AmountDecimal
OwnerIdOwnerLookup → UserAccountYes
ParentServiceCampaignIdService CampaignLookup → ServiceCampaign
PartnerAccountIdPartner AccountLookup → Account
PerformGLPostingPerform GL PostingBooleanYes
RecordTypeIdRecord TypeGuid, hidden
ReminderDaysOffset1Reminder Days Offset 1NumberFirst reminder window in days for the schedule-driven actions: ProcessContractSchedule / ProcessMaintenanceSchedule create a reminder Lead when a contract's due date is exactly today plus this offset (the lead's ReminderOffsetNumber is stamped 1). The largest of the three offsets bounds how far ahead contracts are scanned.
ReminderDaysOffset2Reminder Days Offset 2NumberSecond reminder window in days - a due date exactly today plus this offset produces a reminder Lead stamped ReminderOffsetNumber 2. See reminderDaysOffset1 for the mechanism.
ReminderDaysOffset3Reminder Days Offset 3NumberThird reminder window in days - a due date exactly today plus this offset produces a reminder Lead stamped ReminderOffsetNumber 3. See reminderDaysOffset1 for the mechanism.
ReportIdReportText
RuleSuccessCriteriaRule Success CriteriaPickListHow the ServiceCampaignRule rows combine in the member build: 'Always (No Criteria)' or empty matches every row, 'All Rules Are Met' requires all, 'Any Rule Is Met' requires at least one, 'Custom Logic Is Met' evaluates ruleSuccessCustomLogic. Gotcha: the engine matches these exact strings and treats anything unrecognized as all-rules-must-match - the seeded picklist spelling 'Any Rules Are Met' is NOT the engine's 'Any Rule Is Met' and therefore behaves as ALL. Values: All Rules Are Met, Any Rules Are Met, Always (No Criteria), Custom Logic Is Met.
RuleSuccessCustomLogicRule Success Custom LogicTextBoolean expression over the rules' 1-based sequence numbers, e.g. '1 AND (2 OR 3)', used when ruleSuccessCriteria is 'Custom Logic Is Met'. Evaluated in memory by the group-rule engine.
ServiceContractIdService ContractLookup
ServiceLeadIdServiceLeadGuid
StartDateStart DateDate
StatusStatusPickListValues: Draft, Start, In Progress, On Hold.
ToEngineSeriesTo Engine SeriesNumber
TypeTypePickListValues: Recall - Asset Actions, Marketing;Service.
UIPropsUI PropsText
UpdatedDateTimeModified DateDateAndTimeYes

Actions

ActionLabelTypeWhat it does
BulkDeleteDeleteDeleteDelete the selected records.
CloneCloneServerAction (Clone)Create a copy of this record
DeleteDeleteDeleteDelete
DeleteInListDeleteDeleteDelete in a list page
EditEditEditInlineEdit
Edit2EditEditInlineEdit
EditInLineEditEditEdit in page.
EditRowEditEditEdit
NewNewNewNew
ProcessAssetsProcess AssetsServerAction (ProcessAssets)Creates AssetMaintenance rows - one per member per ServiceCampaignItem - carrying the member's asset and the item's quantity/contract/mandatory attributes. These are the pending recall/maintenance actions later pulled into Opportunities or ServiceOrders for the asset (automatically or manually per the campaign's manualAssetAction). Requires the campaign active and inside its date window; reruns sweep the previous batch.
ProcessContractScheduleProcess Contract ScheduleServerAction (ProcessContractSchedule)Generates contract-renewal reminder Leads: scans un-utilized AssetServiceContract rows for the campaign's itemServiceContractId whose dueDate lands exactly on today plus one of the campaign's reminderDaysOffset1/2/3, and creates one lead per hit stamped with the matching ReminderOffsetNumber. Requires the campaign active and inside its date window. Intended to run daily (each day matches the contracts whose due date crosses an offset boundary).
ProcessLeadsProcess LeadsServerAction (ProcessLeads)Creates one Draft Lead per ServiceCampaignMember, carrying the member's account/asset/partner/branch links and a back-reference to the campaign and member. Requires the campaign active and inside its start/end window. Each run tags its leads with a batch id and hard-deletes the campaign's leads from earlier runs - so rerunning replaces previously generated (unconverted) leads rather than adding to them.
ProcessMaintenanceScheduleProcess Maintenance ScheduleServerAction (ProcessMaintenanceSchedule)Requires the campaign active and inside its date window.
ProcessMembersProcess MembersServerAction (ProcessMembers)Rebuilds the campaign's member list: resolves the Accounts or Assets (per dynamicMemberObject) matching the ServiceCampaignRule rows under ruleSuccessCriteria, inserts one ServiceCampaignMember per match tagged with a fresh batch id, then soft-deletes members from earlier runs - build and sweep commit in one unit of work so the campaign is never left member-less in between. Run this before any of the generation actions - they all fan out from the current member rows.
ProcessOpportunitiesProcess OpportunitiesServerAction (ProcessOpportunities)Creates one Opportunity per ServiceCampaignMember plus one OpportunityLine per ServiceCampaignItem under each (copying item, quantity, contract link and the mandatory flag). Requires the campaign active and inside its date window. Reruns replace: earlier runs' opportunities for this campaign are deleted and the new batch takes their place.

Lookup filters

FilterLookup fieldNotes
Branch For Partner AccountBranchId
Customer Account FilterAccountId
Partner Account FilterPartnerAccountId