Configuring FSM Contact Sourcing and Synchronization
Field Service Management (FSM) lets you configure which customer contacts are attached to projects. You can also control the primary-contact selector during project creation and make the existing Contacts resource available in FSM Mobile. Maintain the related records used to supply case contact details. For sourcing order, record interactions, and processing behavior, see FSM Contact Sourcing and Synchronization.
The project attachment filter, project creation selector, and case contact sourcing serve different purposes. Changing one does not configure the others.
Before You Begin
You need access to edit the Field Service Configuration record and the applicable project, case, customer, and contact records.
Confirm the following prerequisites:
-
Customer contacts already exist and are associated with the intended customer. Project synchronization attaches existing records. It does not create contacts.
-
A project that will receive background contact attachments has a Field Service Project Type (
custentity_nx_project_type) and the correct Field Service Customer (custentity_nx_customer). -
The project form exposes Field Service Update Contacts (
custentity_nx_contact_update). The supplied Field Service Project form labels it Update Contacts and includes the Contacts sublist. -
To use the creation selector, the project form is editable and the Field Service Project Type field is visible. The scripted selector is added during creation, rather than when viewing or editing an existing project.
-
The supplied Field Service Client and Field Service User Event deployments apply to the applicable project and case records. Background attachment uses Field Service Scheduled : Contact (
customdeploy_nx_contact) under Field Service Scheduled (customscript_nx_scheduled). See FSM Script Reference for deployment and monitoring guidance.
Core Configuration and Choices
Contact sourcing and project attachment work with the supplied configuration. A custom filter is needed when you want to restrict background attachments beyond the customer's contact relationship.
The following table summarizes the supplied settings and available configuration choices.
|
Configuration Area |
Supplied Value or Default Source |
Choice and Effect |
|---|---|---|
|
|
Schema fallback |
Add a contact search filter to restrict background attachment candidates. The fallback does not explicitly exclude inactive contacts. |
|
|
Component default |
Set |
|
|
|
Identifies the scripted page field. Retain a unique page-field ID. This ID is separate from the record's |
|
|
Translated Contact label. |
Change the selector's label without changing its record relationship. |
|
|
Current customer's active contacts, with a primary contact selected when available. |
Configure the selector's search and display. Retain contact IDs and the intended customer restriction. This search is separate from the attachment filter. |
|
Project Update Contacts request |
The field definition starts unchecked. The FSM project model supplies |
On an existing project with a Field Service Project Type, check Update Contacts and save to request another assessment. An initialization default is not a continuously enforced setting on every saved project. |
|
|
Supplied Contacts resource with |
Select this existing resource in the applicable event-resource rules to display contact details. Its definition alone does not select it for every event. |
For model and view definitions, see the models/project and views/project/contact references.
The following JSON shows the supplied defaults for these properties:
{
"contact": {
"projectUpdateFilter": [
"internalid",
"noneof",
"@NONE@"
]
},
"views/project/contact": {
"hidden": false,
"name": "custpage_nx_contact"
},
"models/project": {
"prototype": {
"defaults": {
"updatecontacts": true
}
}
}
}
Restrict Background Attachments to Active Contacts
Set the additional contact filter in the custom JSON on the Field Service Configuration record. Use the root contact object and its projectUpdateFilter property.
To restrict background attachments to active contacts:
-
Go to Field Service > Administration > Configuration. The Field Service Configuration page opens the active configuration record.
-
Record the name of the active configuration so that you can identify it when activating the replacement.
-
In Name, enter a unique name for the replacement version. Begin with the current product version, followed by the date in
YYYYMMDDformat and your initials. You can add a short description. -
Check the Inactive box to keep the replacement inactive during editing.
-
From the Save list, click Save As.
-
Click List. On the Field Service Configuration List page, check the Show Inactives box.
-
Find the replacement record and click Edit.
-
In the Editor, add or update
projectUpdateFilterinside the rootcontactobject using the following fragment. Preserve unrelated configuration.This is a fragment to merge into the existing custom configuration:
{ "contact": { "projectUpdateFilter": ["isinactive", "is", "F"] } } -
Check the effective filter in Preview when available. A custom filter array replaces the complete previous additional filter. Include any other restrictions that must remain.
-
Check that the Editor content is valid JSON. Review property paths, values, record references, searches, expressions, and the account setup required by the change. Review duplicate property names because only the last value remains.
-
From the Save As list, click Save.
-
On the configuration list, clear the Inactive box for the replacement record and check the Inactive box for the previous active record.
-
Click Submit. Reopen the configuration page to confirm the intended record is active.
-
On an existing project with a Field Service Project Type, check the Update Contacts box and save the project to request assessment. The model supplies that request during initialization of a project with a Field Service Project Type.
FSM combines the configured projectUpdateFilter with its customer-contact relationship restriction using and. The custom array replaces the fallback ["internalid", "noneof", "@NONE@"]. It is not appended to that fallback. The customer restriction is added separately, so you do not need to repeat it. For the shared array rules, see Understanding the Hierarchy.
The fragment restricts new background attachments to active contacts. It does not remove an inactive contact already attached to the project, change the creation selector, or rewrite case Contact, Email, or Phone values. For complete filter syntax, see FSM Searches and Field Mapping.
Require a Contact Checkbox as Well as Active Status
An account-specific contact checkbox can restrict which contacts are attached. The following fragment expands the active-only example to require custentity_kl_contact_to_project to be checked as well:
custentity_kl_contact_to_project is a customer-defined field ID, not an FSM-supplied field. Before using this example, confirm that custentity_kl_contact_to_project exists as a searchable contact checkbox field. For another account, replace this ID with the applicable field ID.
{
"contact": {
"projectUpdateFilter": [
["isinactive", "is", "F"],
"and",
["custentity_kl_contact_to_project", "is", "T"]
]
}
}
A contact qualifies only if it is associated with the project's customer, is active, and has the specified checkbox selected. Include every additional restriction that must remain in projectUpdateFilter. The previous active-only array is replaced. Changing the checkbox after a contact has been attached does not detach that contact.
An already running execution can have loaded the previous configuration. Do not assume that activation cancels or changes actions already assessed by that execution.
Configure the Project Creation Selector
The selector uses the root property "views/project/contact". Its options are resolved using the current project context, including project.customer. For root placement, see Finding a Configuration Area.
To configure the project creation selector:
-
Go to Field Service > Administration > Configuration. The Field Service Configuration page opens the active configuration record.
-
Record the name of the active configuration so that you can identify it when activating the replacement.
-
In Name, enter a unique name for the replacement version. Begin with the current product version, followed by the date in
YYYYMMDDformat and your initials. You can add a short description. -
Check the Inactive box to keep the replacement inactive during editing.
-
From the Save list, click Save As.
-
Click List. On the Field Service Configuration List page, check the Show Inactives box.
-
Find the replacement record and click Edit.
-
To show the selector with a different label, add the following fragment. Retain the default field name unless a unique alternative is needed for the form.
This fragment changes the label and enables the selector. It retains the inherited options and field name.
{ "views/project/contact": { "hidden": false, "label": "Service Contact" } } -
(Optional) To narrow the choices, change
options.contacts.filters. Preserve both the current-customer condition and the active-contact condition in the filter example. Include any additional restriction required by the account.For an account that already overrides the selector's filters, the following fragment restores the current-customer and active-contact conditions. It replaces the filter array and leaves the option map unchanged. Retain the contact IDs, labels, and primary-selection mapping described in the supplied option map.
{ "views/project/contact": { "options": { "contacts": { "filters": [ ["internalid", "is", "${ project.customer }"], "and", ["contact.isinactive", "is", "F"] ] } } } } -
Preserve
array: trueand the option mappings forid,label, andselected. Contact IDs identify the records to attach. Theselectedmapping identifies a primary contact. Do not rely on a particular contact being chosen when multiple options qualify as primary. -
Check that the Editor content is valid JSON. Review property paths, values, record references, searches, expressions, and the account setup required by the change. Review duplicate property names because only the last value remains.
-
From the Save As list, click Save.
-
On the configuration list, clear the Inactive box for the replacement record and check the Inactive box for the previous active record.
-
Click Submit. Reopen the configuration page to confirm the intended record is active.
The supplied option map is id: "contact.internalid", label: "<contact.entityid", and selected: "formulatext:case when {contact.role} = -10 then 'T' else '' end". The label mapping orders the choices by contact name. See views/project/contact for the full view reference and FSM Expressions and Template Tags for template syntax.
Add the Contact Checkbox to the Creation Choices
If the custom checkbox is available through the customer search's contact join, use the following fragment. It restricts the current customer's creation choices to active contacts with the checkbox selected:
{
"views/project/contact": {
"options": {
"contacts": {
"filters": [
["internalid", "is", "${ project.customer }"],
"and",
["contact.isinactive", "is", "F"],
"and",
["contact.custentity_kl_contact_to_project", "is", "T"]
]
}
}
}
}
Unlike the background attachment filter, this filter array contains the customer restriction itself. The fragment replaces the complete view filter array, so it explicitly retains both the current-customer and active-contact conditions. It leaves the inherited customer search and option map unchanged.
Use contact. before the checkbox field ID here because the search is on customer records with joined contact fields. The background attachment search is directly on contact records, so its checkbox field ID has no contact. prefix. Changing the creation choices does not change contact.projectUpdateFilter. Configure both properties when both outcomes need the restriction.
An empty selector value does not itself request clearing a contact. For an existing project, use its contact relationships rather than expecting this creation-only selector to appear.
When you save a project during creation with a Field Service Project Type and a selected contact, FSM attaches that contact using the Primary Contact role.
Prepare Records for Case Contact Sourcing
Case contact sourcing uses the related transaction, project, and customer records. The project attachment filter and selector options do not change the sourcing order described in the Feature.
To prepare records for case contact sourcing:
-
Maintain the primary-contact relationship on the transaction or project that should supply the contact. For customer fallback, maintain the customer's primary-contact relationship and the customer record's Email and Phone fields.
-
On the case, select the intended project in Company (
company) and the intended customer in Field Service Customer (custevent_nx_customer). Set the intended transaction incustevent_nx_case_transaction, as applicable.
FSM populates the case's Contact (contact), Email (email), and Phone (phone) fields according to the applicable sourcing branch. A project's primary-contact branch reads the primary contact's email and phone. The customer-details fallback reads the customer's own fields.
For non-interface creation or editing, any supplied Contact, Email, or Phone value causes the contact component to skip sourcing at submission. This protection does not apply to creation-form loading or changes to related fields in the NetSuite interface. A change in the interface can replace sourced details already present.
A project relationship without a primary contact prevents the customer-primary-contact branch from being selected, although customer Email and Phone fallback can still apply. Values not included in the selected update are not explicitly cleared by the contact evaluator.
Make Contact Details Available in FSM Mobile
Use the existing contact resource under the literal "routes/mobile" key. It reads contact records using event.contact and reads the customer details when the mapped contact value is zero. Preserve the event's contact and customer mappings and the supplied lookup definitions.
To make contact details available in FSM Mobile:
-
Go to Field Service > Administration > Configuration. The Field Service Configuration page opens the active configuration record.
-
Record the name of the active configuration so that you can identify it when activating the replacement.
-
In Name, enter a unique name for the replacement version. Begin with the current product version, followed by the date in
YYYYMMDDformat and your initials. You can add a short description. -
Check the Inactive box to keep the replacement inactive during editing.
-
From the Save list, click Save As.
-
Click List. On the Field Service Configuration List page, check the Show Inactives box.
-
Find the replacement record and click Edit.
-
Make
contactavailable in the applicableevent.article.task.resourcesorevent.article.projecttask.resourcesrule, following Selecting Resources. -
Retain
readonly: trueon"routes/mobile".contact. The supplied resource provides contact viewing rather than contact maintenance. -
Check that the Editor content is valid JSON. Review property paths, values, record references, searches, expressions, and the account setup required by the change. Review duplicate property names because only the last value remains.
-
From the Save As list, click Save.
-
On the configuration list, clear the Inactive box for the replacement record and check the Inactive box for the previous active record.
-
Click Submit. Reopen the configuration page to confirm the intended record is active.
The event's mapped contact value can be sourced from its task, related case, project, or customer. The mapped contact value is separate from the contacts attached to a project. Background attachment does not guarantee that every attached contact appears in the Contacts resource in FSM Mobile.
See FSM Mobile Resource Selection and Shared Data for selection rules and FSM Mobile Resource Properties Reference for shared resource and article definitions. Contact Tab in FSM Mobile describes viewing details and using the device's phone and email applications.
When Contact Settings Apply
The Update Contacts box requests assessment. A checked box does not indicate that the scheduled script is running. A cleared box does not confirm that every customer contact is attached. The background filter and immediate creation selector use separate selection rules.
Contact access settings in FSM Mobile affect the resource, rather than the project's background attachment processing. See FSM Contact Sourcing and Synchronization, FSM Script Reference, and the Field Service Error Record topic for processing and errors.
For performance measurement and data capture, see FSM Performance and Data Collection.
Changing or Disabling Contact Settings
Removing contact.projectUpdateFilter restores its inherited filter, which does not explicitly exclude inactive contacts. Changing it does not detach existing project contacts.
Set "views/project/contact".hidden to true to turn off the creation selector and its copy handler. This does not stop background attachment processing or remove existing links. Contact access settings in FSM Mobile do not delete contact records.
Changed settings do not cancel processing already running or reverse record changes already produced.