Wednesday, June 3, 2015

How to Create Custom Records in NetSuite – Step by Step Instructions: Part I

Overview

In NetSuite, Custom Records are essentially everything and anything.
My bet is that whenever you need a process or a functionality that is not available in NetSuite out-of-the-box, custom records can help you! Custom Records are dynamic and customizable building blocks that allow you to create custom fields, lists and special links with other NetSuite records and transactions.
Custom Records in NetSuite
Here are some advantages of using Custom Records in NetSuite:
Advantages Description
Flexibility and Interactivity Custom records can be almost anything. They are easy to format and configure. They can also be tied to almost any record in NetSuite.
Highly Integrated When you create Custom Records, NetSuite will treat them like any record in the system. Each new record is assigned a standard form that you can customize and tweak.
Reporting When adding Custom Records to the system, you are adding a new Saved Search type to NetSuite. This will allow you to search for these records and create various reports.
CSV Imports Custom Records can easily be imported into NetSuite via the CSV Import Tool.
SuiteScript, SuiteFlow and Web Services Support You can deploy custom SuiteFlow Workflows on custom records. In addition, you can write your own custom scripts to enhance your custom record’s functionality. Custom Records also integrate easily with external web applications.
Below is a short list of current limitations relative to Custom Records:
Limitations Description
Uniqueness Validation While NetSuite does not validate the Name field of custom records to ensure its uniqueness, this can be enforced via SuiteScript custom scripts.
Duplicate Resolution Back-End NetSuite duplicate resolution functionality cannot be run on Custom Records.

When to Use Custom Records in NetSuite?

You would use these records whenever you wish to enhance NetSuite’s current functionality and track more information on existing, native records and transactions. Furthermore, think of custom records as database tables. They can store information and allow you to access it either directly or through links to other records or transactions.

A Real-Life Example

Using a common business scenario, I will provide a detailed ‘step by step’ guide for the creation and management of Custom Records.

Business Scenario:

  • We operate a service company that organizes webinars to educate ERP enthusiasts.
  • We typically store the information about our webinars and the list of attendees in an external application.
  • The webinars will be held once per week, and after each webinar, the list of the attendees and the webinar rate/fee will be imported into NetSuite (via CSV/Web services Integration)
  • Based on this information, we will be able to bill our webinar attendees
  • When we invoice our attendees, we will mark those attendees as billed to ensure we properly charge for services rendered. Also, we will link the invoices that were created to our attendee/client records for reference and reporting purposes.

Goals of this Setup:

  • Understand:
    • Custom Records.
    • The relationships between Custom Records and other fields and transactions.
  • Combine operations with billing.
  • Streamline role-specific tasks and combine them into one solution.

Assumptions:

To keep it simple, we assume that:
  • All our attendees belong to companies/customers that already exist in the system.
  • There will be 2 roles managing the solution:
    • Billing/AR Agent: Bills attendees
    • Project Manager: Imports webinar & attendee-related data
Okay, let’s get started!

Step 1. Design, Design, Design …

When it comes to Custom Records or business solutions in general, I recommend you spend quite a bit of time designing, drawing and planning out your solution before you start configuring the records in NetSuite. As they say “measure twice, cut once.”
This will make your project more efficient and you will avoid possible design flaws from inadequate planning.
Having said that, let us look at our example above and draw-out the records we may need to create in NetSuite.
Diagram 1.1
Diagram 11

In Diagram 1.1 the Custom Records we need to create are colored green.
Box #1 refers to our Webinar. As per our scenario, we need to capture only the basic webinar information: Webinar Name, Webinar Date and Time. Notice thatBox 1 connects to Box 2, which is our Attendee record. Also note that there is a ‘many-to-many’ relationship between our Webinar and Attendee records, meaning that there will be multiple attendees attending multiple webinars.
Box #2 lists all the required information we need to see on the Attendee record including the ‘Webinar’ field that links to the Webinar record. Notice that ‘Attendee’s Company’ field links to a customer record, as we would like to know which client/company our attendee belongs to. In addition, the ‘Rate’ field will be used for subsequent billing and the Invoice field will store the link to our Invoice.
Box #3 is the Customer Record that we can link to from the Attendee record, explained above.
Box #4 is the Invoice that will be generated after the Webinar is done. Notice the Service Item: ‘Webinar Fee ‘ will be used for invoicing and the rate on the Attendee record will be used as the charge amount.

Step 2. Create a Custom Webinar Record

Now that we have mapped out the logic of our design, let’s create a Webinar Record.
Log in to NetSuite as an Administrator and navigate to:
Customization > Lists, Records and Fields > Record Types > New
A. Create the record and fields
  • Fill in the values as outlined in the image below.
NetSuite Custom Record Type

  • Notice: I highlighted ‘Include Name Field’ checkbox. If you wish to import your records via CSV import tool, you must use the ‘Name’ field on your records and hence this checkbox must be checked.
  • Save the record. Now ‘edit’ the same record and notice that you can now add fields to the record.
NetSuite Save Record

  • Click on the [New Field] button and build your fields using the specifications outlined below.
NetSuite New Field

B. Adjust other tabs on the record.
Now, let’s fine-tune the record and adjust other tabs. Remember, a custom record is like any other record in NetSuite. Just like other records, it can contain subtabs, lists and forms.
  • Create an ‘Attendees’ subtab. This is where we will be able to see all Attendee records that are linked to our Webinar.
NetSuite Subtab
  • We can also auto-generate record names, which I find to be a greatly useful feature. This can be configured under the ‘Numbering’ tab.
NetSuite auto generate record names

  • When you create a custom record, a standard form will automatically be generated by NetSuite. You can find this form under the ‘Forms’ tab. You can further customize this form and remove the fields or tabs that you do not want the user to see.
NetSuite Forms
  • The ‘Permissions’ tab allows you to restrict access to this record for specific roles.
  • The ‘Links’ tab is where you can indicate where in the menu you wish to show the link to your custom record. As you can see from the image below, I chose the ‘Classic Center Type’ (center type associated to Administrators). Note that there are many Center Types in NetSuite and they are specific to a role type. For additional information about Center Types, please download this guide.
NetSuite Links

    • The ‘Section’ column defines the tab in the navigation menu where you would like your record list to be (I picked ‘Lists’).
    • Category’ is the value in NetSuite menu’s dropdown list where you are placing your link (I picked ‘Custom’).
    • Link’ is the name of your custom record. Notice, if you choose not to use the default (i.e., ‘Webinar’), you can give your link an alternative name in the ‘Label’ field.
  • Now, let’s see what this looks like in the menu:
NetSuite Menu

  • If we click on ‘New’ we can create our first ‘Webinar’ record.
NetSuite Webinar Record

Step 3. Create a Custom Attendee Record

We now have our Webinar record, but that is not enough! We need to create the Attendee record as well. Suffice to say, ‘no audience, no webinar!’
As in Step 2, point A, go to:
  • Customization > Lists, Records and Fields > Record Types > New.
  • Fill in the values as outlined in the image below.
NetSuite Custom Records

  • After saving this record, please proceed with adding other fields under the ‘Fields’ tab.
NetSuite Fields Tab

  • Notice that:
    • Webinar
    • Attendee’s Company
    • Invoice
…are fields of the type ‘list/record.’ These will link to actual NetSuite records/transactions (existing webinars, customers or invoices).
  • Under the Links tab, we will specify where we wish to find our Attendee record list.
NetSuite Attendee Record List

  • Now we will create a sample Attendee record and we will link it to the Webinar we created in Step 3.
  • Go to Lists > Custom > Webinar Attendee
  • Click on the [New Webinar Attendee] button. Populate your Attendee record. In the ‘Webinar’ field, select the webinar you created in Step 3.
    • Select a company that this Attendee belongs to in the ‘Attendee’s Company’ field.
    • Add the rate this Attendee paid to attend the webinar.
    • Save your record.
NetSuite Attendee
  • Important:
    In order for the Webinar to show Attendees in the sublist view, you must assign the ‘Webinar’ as a parent record within the ‘Webinar’ field on the ‘Attendee’ record.
    • Go to Customization > Lists, Records & Fields > Record Types > Webinar Attendee.
    • Click on the ‘Webinar’ field.
NetSuite Webinar Attendee Field
    • Notice, I checked the ‘Record is Parent’ check-box, as this will make the ‘Attendee’ a child of the ‘Webinar’ record.
    • Under the ‘Parent Subtab,’ I specified where I wish to show a list of my webinar attendees. In this case I chose the ‘Attendees’ Subtab.
  • Now, navigate to your Webinar:
    Go to Lists > Custom > Webinar: Click ‘View’ on the Webinar you created in Step 3.
    You should now see this screen:
NetSuite Webinar Screen

That’s it. You’ve now created a functional custom record in NetSuite.
In the second part (coming soon) of this blog series we will examine how to:
  • Further customize the Webinar Attendee record.
  • Incorporate billing into our solution.
  • Use saved searches with our records.
  • Leverage CSV import tool to import our records into NetSuite.
This is part 1 in a blog series of 2. See part 2 here: How to Create Custom Records in NetSuite – Step by Step Instructions: Part II