Field service
About Field Service projects
A project (job) is an entity created to be associated with specific customers or companies for the purpose of defining tasks and sub-tasks, allocating resources, assign billing schedules, or other business processes.
Create a project
Because a project is an entity, the name of the project is set with companyname (string) and the customer/company associated with the project is set with parent (internalid). Employees to be allocated as resources in the jobresources sublist, must have the “Project Resource” check box checked on their employee record.
Example Using Advanced Inventory RecordCreate
{ "recordcategory": "entity", "create": [{ "mc_user": "Freddy.Jones@dsiglobal.com", "recordtype": "job", "entityid": "", "location": "2", "subsidiary":"1", "sublists": [{ "sublistid": "jobresources", "subrecordname":"", "lines": [{ "nvpair": [{ "columnid": "jobresource", "newvalue": "114" },{ "columnid": "role", "newvalue": "-2" }] },{ "nvpair": [{ "columnid": "jobresource", "newvalue": "117" },{ "columnid": "role", "newvalue": "-3" }] }] }], "targetfields": [{ "fieldid": "parent", "value": "14" },{ "fieldid": "companyname", "value": "KC Tents: Weekend Camp" },{ "fieldid": "allowtime", "value": "T" }] }] }
Create a transaction for a project
Creating an opportunity, estimate or order for a project is exactly the same as creating any other transactions of those types. Simply include the project's internal id in the job field in addition to the other required fields. The following is an example estimate/quote; other transactions are similar.
Example Using DSI_RecordCreate
{ "recordcategory": "transaction", "create": [{ "mc_user": "jay.garrick@dsiglobal.com", "recordtype": "estimate", "entityid": "2956", "location": "2", "subsidiary":"1", "sublists": [{ "sublistid": "item", "lines": [{ "nvpair": [{ "columnid": "item", "newvalue": "1314" },{ "columnid": "quantity", "newvalue": "1" }] }] }], "targetfields": [{ "fieldid": "job", "value": "4062" },{ "fieldid": "title", "value": "Sell stuff from project" },{ "fieldid": "opportunity", "value": "33382" }] }] }
Create a project task
The fields, title and company, are required as well as subsidiary and location if applicable. In the assignee sublist, resource, serviceitem, estimatedwork, and unitcost are required. Note, this has a recordcategory of event, not transaction.
Example Using DSI_RecordCreate
{ "recordcategory": "event", "create": [{ "mc_user": "lana.lang@dsiglobal.com", "recordtype": "projecttask", "tranid": "RESTlet Task", "location": "2", "subsidiary":"1", "sublists": [{ "sublistid": "assignee", "lines": [{ "nvpair": [{ "columnid": "resource", "newvalue": "1626" },{ "columnid": "serviceitem", "newvalue": "2024" },{ "columnid": "estimatedwork", "newvalue": "16" },{ "columnid": "unitcost", "newvalue": "15.00" }] },{ "nvpair": [{ "columnid": "resource", "newvalue": "1644" },{ "columnid": "serviceitem", "newvalue": "2024" },{ "columnid": "estimatedwork", "newvalue": "4" },{ "columnid": "unitcost", "newvalue": "65.00" }] }] }], "targetfields": [{ "fieldid": "title", "value": "RESTlet Task" },{ "fieldid": "company", "value": "4062" },{ "fieldid": "finishbydate", "value": "10/26/2016" }] }] }
Create a project sub-task
The only difference between a task and a sub-task is a second sublist, predecessor. This sublist requires task and type; enddate and startdate are optional. Values for type: FS (Finish-To-Start), SS (Start-To-Start), FF (Finish-to-Finish), SF (Start-To-Finish).
Example Using DSI_RecordCreate
{ "recordcategory": "event", "create": [{ "mc_user": "lana.lang@dsiglobal.com", "recordtype": "projecttask", "location": "2", "subsidiary":"1", "sublists": [{ "sublistid": "assignee", "lines": [{ "nvpair": [{ "columnid": "resource", "newvalue": "1626" },{ "columnid": "serviceitem", "newvalue": "2024" },{ "columnid": "estimatedwork", "newvalue": "8" },{ "columnid": "unitcost", "newvalue": "15.00" }] }] },{ "sublistid": "predecessor", "lines": [{ "nvpair": [{ "columnid": "task", "newvalue": "101901" },{ "columnid": "type", "newvalue": "SS" },{ "columnid": "startdate", "newvalue": "10/24/2016" }] }] }], "targetfields": [{ "fieldid": "title", "value": "RESTlet SubTask" },{ "fieldid": "company", "value": "4062" },{ "fieldid": "finishbydate", "value": "10/26/2016" }] }] }
Project billing types
Billing types are used to define the billing processes used to charge for materials and resources associated with specific projects and tasks.
The following list provides examples of available billing types.
Projects and Time and Materials Billing
Bill customers for actual project expenses, such as resource time and materials.
Fixed Bid, Interval Billing Schedules
Bill customers for work completed at predefined intervals.
Fixed Bid, Milestone Billing Schedules
Bill customers based on percent of work completed, or preset milestones.
Charge-Based Project Billing
If you use the Charge-Based Billing feature, you can create charge rules that provide added flexibility for calculating billable value on projects.
To set the billing type, use the jobbillintype field when either creating or updating a project.
Job billing type | jobbillingtype internal id |
---|---|
Charge-Based | CB |
Fixed Bid, Interval | FBI |
Fixed Bid, Milestone | FBM |
Time and Materials | TM |
Assign a billing schedule
After a billing type is selected, you can then assign a billing schedule record to the billingschedule field. Billing schedules are assigned by internalid. Billing Schedules must already exist before they can be assigned to a project.
Values for frequency and the allowed values for repeatevery.
frequency | repeatevery |
---|---|
Hourly | 6 or 12 |
Weekly | 1, 2, or 4 |
Monthly | 1, 2, 3, or 6 |
Annually | 1, 2, or 3 |
Example Using DSI_RecordCreate
{ "recordcategory": "entity", "create": [{ "mc_user": "quincy.magoo@dsiglobal.com", "recordtype": "billingschedule", "targetfields": [{ "fieldid": "name", "value": "Continuing Service for Douglas Farm" },{ "fieldid": "frequency", "value": "MONTHLY" },{ "fieldid": "inarrears", "value": "T" },{ "fieldid": "initialamount", "value": "0" },{ "fieldid": "numberremaining", "value": "6" },{ "fieldid": "repeatevery", "value": "1" },{ "fieldid": "public", "value": "F" }] }] }
Enter or bill time to a project
Time entry that is directly assigned to a project requires the use of the Time Entry RESTlet. The customer will be the project internal id, not the parent customer. The use of the Record Create RESTlet is not applicable in this instance.
Example Using DSI_Time
{
"mc_user": "dick.grayson@dsiglobal.com",
"entry": [{
"employee": "1647",
"casetaskevent":"",
"trandate":"",
"customer":"4062",
"serviceitem":"2024",
"location":"2",
"hours":"2:15",
"memo":"Time Entered by Advanced Inventory",
"isbillable":"T",
"payrollitem":"",
"paidexternally":"",
"rate":"50.00",
"price":"",
"overriderate":"",
"department":"",
"class":"",
"supervisorapproval": "T"
}]
}
Enter or bill time to a task
Time can added to the timeitem sublist of the task. The keyword NEW should be used in place of a line number.
Note:Timeitem accepts the values of P and A.
Example Using DSI_RecordUpdate
{ "internalid": "102302", "recordtype": "task", "mc_user": "fats.domino@dsiglobal.com", "updatefields": [{ "fieldid": "percentcomplete", "newvalue": "100" }], "updatecolumns": [{ "sublistid": "timeitem", "lines": [{ "line": "NEW", "remove": "", "nvpair": [{ "columnid": "customer", "newvalue": "4062" },{ "columnid": "employee", "newvalue": "1626" },{ "columnid": "hours", "newvalue": "3:45" },{ "columnid": "item", "newvalue": "2024" },{ "columnid": "location", "newvalue": "2" },{ "columnid": "isbillable", "newvalue": "T" },{ "columnid": "timetype", "newvalue": "A" },{ "columnid": "memo", "newvalue": "working a client site" }] }] }] }
Create a project milestone
A project milestone is a special project task that is used to mark a point in a project, usually the completion of a set of tasks. Milestones should have ismilestone set to T. Project milestones cannot have estimatedwork, assignees, or a Finish No Later Than (FNLT) constrainttype.
Example Using DSI_RecordCreate
{ "recordcategory": "event", "create": [{ "mc_user": "lana.lang@dsiglobal.com", "recordtype": "projecttask", "location": "2", "subsidiary":"1", "sublists": [{ "sublistid": "predecessor", "lines": [{ "nvpair": [{ "columnid": "task", "newvalue": "101901" },{ "columnid": "type", "newvalue": "SS" },{ "columnid": "startdate", "newvalue": "10/24/2016" }] }] }], "targetfields": [{ "fieldid": "title", "value": "RESTlet SubTask - Day 1" },{ "fieldid": "company", "value": "4062" },{ "fieldid": "ismilestone", "value": "T" },{ "fieldid": "enddate", "value": "10/24/2016" },{ "fieldid": "message", "value": "Completed Day 1" }] }] }
Create a generic resource
A generic resource is a convenient placeholder for project planning when the specific resource (person) is not yet known. Creating generic resources is usually a back-office function, but the RESTlets can also create them.
Example Using DSI_RecordCreate
{ "recordcategory": "entity", "create": [{ "mc_user": "santa.claus@dsiglobal.com", "recordtype": "genericresource", "location": "2", "subsidiary":"1", "targetfields": [{ "fieldid": "entityid", "value": "Assembly Worker" },{ "fieldid": "laborcost", "value": "12.65" },{ "fieldid": "workcalendar", "value": "1" }] }] }
Enter a cost budget
When enabled, the cost budget is stored in the cbudget sublist. This list contains static lines and editable lines for labor, expense, supplier and other. If the Use Calculated Value for All Cost Budgets (field id cbudgetusecalculatedvalues) is checked, no lines will be editable.
The following table defines the available editable lines and associated line numbers.
Editable line | Line number |
---|---|
Labor | 1 |
Expense | 4 |
Supplier | 6 |
Other | 8 |
Example Using DSI_RecordUpdate
{ "internalid": "4062", "recordtype": "job", "entityid": "", "mc_user": "wile.coyote@dsiglobal.com", "updatefields": [{ "fieldid": "cbudgetusecalculatedvalues", "newvalue": "F" }], "updatecolumns": [{ "sublistid": "cbudget", "subrecordname":"", "lines": [{ "line": "1", "nvpair": [{ "columnid": "totalamount", "newvalue": "1000" }] },{ "line": "4", "nvpair": [{ "columnid": "totalamount", "newvalue": "100" }] },{ "line": "6", "nvpair": [{ "columnid": "totalamount", "newvalue": "12395.41" }] },{ "line": "8", "nvpair": [{ "columnid": "totalamount", "newvalue": "9.95" }] }] }] }
Enter a billing budget
When enabled, the billing budget is stored in the bbudget sublist. This list contains static lines and editable lines for labor, expense, supplier and other. If the Use Calculated Value for All Cost Budgets (field id bbudgetusecalculatedvalues) is checked, no lines will be editable
The following table defines the available editable lines and associated line numbers.
Editable lines | Line numbers |
---|---|
Labor | 1 |
Expense | 3 |
Supplier | 5 |
Other | 7 |
Example Using DSI_RecordUpdate
{ "internalid": "4062", "recordtype": "job", "entityid": "", "mc_user": "wile.coyote@dsiglobal.com", "updatefields": [{ "fieldid": "bbudgetusecalculatedvalues", "newvalue": "F" }], "updatecolumns": [{ "sublistid": "bbudget", "subrecordname":"", "lines": [{ "line": "1", "nvpair": [{ "columnid": "totalamount", "newvalue": "1000" }] },{ "line": "3", "nvpair": [{ "columnid": "totalamount", "newvalue": "100" }] },{ "line": "5", "nvpair": [{ "columnid": "totalamount", "newvalue": "12395.41" }] },{ "line": "7", "nvpair": [{ "columnid": "totalamount", "newvalue": "9.95" }] }] }] }
Project fields
The following table provides definitions for the available project fields.
Internal ID: job
Internal ID | Type | nlapiSubmitField | Label | Required |
---|---|---|---|---|
accountnumber | text | TRUE | Account | FALSE |
actualtime | time | FALSE | Actual Work | FALSE |
allowallresourcesfortasks | checkbox | TRUE | Display All Resources for ProjectTask Assignment | FALSE |
allowexpenses | checkbox | TRUE | Allow Expenses | FALSE |
allowtime | checkbox | TRUE | Allow Time Entry | FALSE |
applyprojectexpensetypetoall | checkbox | FALSE | Apply to all time entries | FALSE |
autoname | checkbox | FALSE | Auto | FALSE |
bbudgetshowcalculatedlines | checkbox | FALSE | Show Calculated Lines | FALSE |
bbudgetusecalculatedvalues | checkbox | FALSE | Use Calculated Values for all Billing Budgets | FALSE |
billingschedule | select | FALSE | Billing Schedule | FALSE |
calculatedenddate | date | FALSE | Calculated End Date | FALSE |
calculatedenddatebaseline | date | FALSE | Calculated End Date Baseline | FALSE |
category | select | TRUE | Category | FALSE |
cbudgetshowcalculatedlines | checkbox | FALSE | Show Calculated Lines | FALSE |
cbudgetusecalculatedvalues | checkbox | FALSE | Use Calculated Values for all Cost Budgets | FALSE |
comments | textarea | TRUE | Comments | FALSE |
companyname | text | TRUE | Project Name | FALSE |
contact | select | FALSE | Primary Contact | FALSE |
currency | select | FALSE | Currency | FALSE |
currencyprecision | text | FALSE | Currency Precision | FALSE |
customform | select | FALSE | Custom Form | TRUE |
datecreated | datetime | FALSE | Date Created | FALSE |
enddate | date | FALSE | Actual End Date | FALSE |
entityid | text | TRUE | Project ID | TRUE |
entitystatus | select | TRUE | Status | FALSE |
estimatedcost | currency | FALSE | Estimated Cost | FALSE |
estimatedgrossprofit | currency | FALSE | Estimated Gross Profit | FALSE |
estimatedgrossprofitpercent | percent | FALSE | Estimated Gross Profit Percent | FALSE |
estimatedlaborcost | currency | FALSE | Estimated Labor Cost | FALSE |
estimatedlaborcostbaseline | currency | FALSE | Estimated Labor Cost Baseline | FALSE |
estimatedlaborrevenue | currency | FALSE | Estimated Labor Revenue | FALSE |
estimatedrevenue | currency | FALSE | Estimated Revenue | FALSE |
estimatedtime | time | TRUE | Initial Time Budget | FALSE |
estimatedtimeoverride | time | FALSE | Estimated Work | FALSE |
estimatedtimeoverridebaseline | time | FALSE | Estimated Work Baseline | FALSE |
estimaterevrectemplate | select | FALSE | Rev Rec Forecast Template | FALSE |
externalid | text | FALSE | ExternalId | FALSE |
fxrate | currency2 | FALSE | Exchange Rate | FALSE |
includecrmtasksintotals | checkbox | TRUE | Include CRM Tasks in Project Totals | FALSE |
isbasecurrency | checkbox | FALSE | Base Currency | FALSE |
isexempttime | checkbox | TRUE | Classify Time as Exempt | FALSE |
isinactive | checkbox | TRUE | Inactive | FALSE |
isjob | text | FALSE | FALSE | |
isproductivetime | checkbox | TRUE | Classify Time as Productive | FALSE |
isutilizedtime | checkbox | TRUE | Classify Time as Utilized | FALSE |
jobbillingtype | select | FALSE | Billing Type | FALSE |
jobitem | select | FALSE | Billing Item | FALSE |
jobprice | currency | FALSE | Project Price | FALSE |
jobtype | select | FALSE | Project Type | FALSE |
language | select | FALSE | Language | FALSE |
lastbaselinedate | date | FALSE | Last Baseline Date | FALSE |
lastmodifieddate | datetime | FALSE | Last Modified Date | FALSE |
limittimetoassignees | checkbox | TRUE | Limit Time Entry to Assignees | FALSE |
materializetime | checkbox | TRUE | Create Planned Time Entries | FALSE |
otherrelationships | select | FALSE | Other Relationships | FALSE |
parent | select | FALSE | Customer | FALSE |
percentcomplete | percent | FALSE | Percent Complete | FALSE |
percenttimecomplete | percent | FALSE | Percent Work Complete | FALSE |
projectedenddate | date | FALSE | Estimated End Date | FALSE |
projectedenddatebaseline | date | FALSE | Estimated End Date Baseline | FALSE |
projectexpensetype | select | FALSE | Project Expense Type | TRUE |
stage | text | FALSE | FALSE | |
startdate | date | FALSE | Start Date | FALSE |
startdatebaseline | date | FALSE | Start Date Baseline | FALSE |
subsidiary | select | FALSE | Subsidiary | TRUE |
timeremaining | time | FALSE | Remaining Work | FALSE |
About Field Service
The Field Service process is created and utilized to assist and support a company's resources employed at or en route to the property of clients. It provides scheduling options, dispatching, service parts management, clear communication to back office administration, maintenance of warranty plans, and labor and expense tracking.
Advanced Inventory provides a mobile app solution to facilitate the Field Service process through a hand held mobile device. The Advanced Inventory app is integrated to work with the NetSuite Field Service functions.
Functional Process
In NetSuite, Field Service transactions are created within the Projects module. From the project, creating Sales Orders, Opportunities, Cases, Tasks, and Milestones allow for an efficient way to track the various transactions that can take place to support a Field Service Request. Work orders, Sales Orders, and Case Management will all be determined by the type of transaction supporting the field service objective.
Environment recommendations
The following list provides recommendations that should be addressed when implementing the Field Service RESTlet.
-
Business process should be defined to begin the Field Service process in a Project.
-
The type of transaction to support the Field Service request should be defined.
-
Resource allocations should be defined.
Loading...
There was a problem loading this topic