Saturday, March 04, 2006

NETFLEX SCRIPTING: THE GOOD, THE BAD AND THE UGLY

This is a reprint of a whitepaper originally published as part of Skyytek's ongoing whitepaper series. The pdf version is located here.

Introduction

NetSuite is a powerful application that can be adapted to many different types of businesses. Normally, we don’t really “customize” NetSuite. The changes we make are made through the NetSuite interface and are really more like “configuration”. As many of you will have heard Ray Tetlow say many times, “Don’t customize the software, change the workflow”. After all, NetSuite can be adapted to a wide range of workflows. If you are thinking of real customization, you should ask yourself, or a member of our team, to review your workflow. In many cases, we can show you best practices that will not only make NetSuite a better fit, but also improve the efficiency of your business.

The main real “customization” tool we have is aremarkable scripting flexibility in NetSuite: NetFlex Custom Code Scripting. This article will introduce you to scripting, explain how it is used and suggest some examples of how it can be used.

Challenges:

Order entry and order processing often include steps and calculations that would normally be problematic for a human being. In some cases, it would be very useful to validate and check input to make sure it was correct. In others, calculations or order entry steps can be very time-consuming and prone to errors. NetFlex Scripting can help with these issues … if used sparingly and carefully.

NetFlex Scripting Overview:

NetSuite’s interface is built out of largely standards compliant HTML, XML and a programming language called JavaScript. Strangely, JavaScript is completely unrelated to Java, Sun’s powerful (and complex) programming language. JavaScript is a simple but powerful language for manipulating web pages. NetSuite uses this capability extensively.

NetSuite provides a lot of help to people planning to use JavaScript for customization, including:

· Special tag libraries
· An API (Application Programming Interface) which provides easily reusable code components (called functions or methods) as well as standardized variable names
· A second version of the API for web sites
· Special script hosting folders
· Convenient ways to include scripts in forms and web pages

Happily, you don’t need to learn any of this because NetFlex scripting should NEVER be attempted by someone who is not a NetSuite certified implementation professional. It can do a lot of good, but it can also do a lot of harm. More importantly (and I can’t emphasize this enough): NETSUITE CANNOT AND WILL NOT SUPPORT YOUR OWN CUSTOM CODE SO ONLY PURCHASE SCRIPTING FROM SOMEONE WHO CAN AND WILL – like Skyytek.

Scripting Uses:

Calculations: One of the best uses of scripting is to perform calculations that would be time-consuming or difficult for your employees to complete. In the example discussed below, a client asked us to help calculate the value of new opportunities based on some simple metrics gathered about the client.

Dynamic Web Interfaces: JavaScript is the engine behind dynamic HTML. Our web team, led by Vijay Saha in our South West offices takes full advantage of the web API to make NetSuite sites sing.

Validation: Another good use is to prevent improperly completed transactions or to validate data entered into forms when the standard field validations in NetSuite aren’t enough.

Automated item entry: NetSuite already includes flexible tools such as kits, groups and matrix items that help in the addition and selection of items to an order. In some cases, however, we can reduce training costs by automating reminders or even automatically adding items to orders to ensure that the order is complete and correct.

Automated help: add alerts and instructions to help your employees, customers or partners complete orders correctly.

How is scripting added?

Scripting can be added in a number of ways:

Custom Forms: When you create a custom form, you can add a custom code file (from your custom code folder) to the form and specify which steps (or “functions”) you want to run when certain things happen on the form. This is deceptively simple. It is up to the script designer to manage this process and make sure the outcome is stable.

Web and Item Templates: Scripting can be added to web store and item templates.

Item descriptions: Item descriptions are HTML – you can add script to these descriptions to have scripts that only run for that specific item. For example, a script can be used to help users complete a search form, restrict web store pricing to only approved users or make a special offer in certain specific circumstances.

Scripting Limitations and Cautions:

Your custom code is your responsibility. The trickiest thing about it is to ensure that it is used appropriately and consistently throughout your workflow. Imagine the chaos, if your quotes, sales orders and invoices use different calculations.

NetSuite has an excellent and well-deserved reputation for stably supporting customizations from version to version. Obviously, however, the more cutting edge your code, the more attention you will have to pay to version changes. You will also have to retest your code during and after version upgrades.

SCRIPTS ARE NOT A SUBSTITUTE FOR A WELL DESIGNED ITEM MASTER AND PROPER WORKFLOW.

Solution: Automated Opportunity Valuation

A client came to us with a CRM problem: their business was based on recurring revenues. Therefore, the value of an opportunity was not a straightforward, single sale. It was really a projection of the value of the new business relationship over time. To complicate matters, different calculations applied to different types of contracts. This presented an additional quoting step using Excel that created a real risk that the forecast would be incorrect and that management could not focus sales efforts on the most valuable opportunities.

The calculations were based on the number of expected transactions, the type of transaction (ie item), the expected rate of growth of business with this client over the contract period as well as default, maximum and minimum values for these variables.

We worked with the client to see if there was a way these calculations could be done without scripting. In the end, a custom opportunity form was created with custom code that ensured that each opportunity met these requirements and presented a properly calculated projected value.

Pre-requisites:
Set up any custom transaction column fields.
Set up hidden configuration transaction body fields that will be used by the administrator to control the various default, minimum and maximum values.


Set-up:

The Opportunity form is customized in three ways:
1. To have a set of default hidden values that will control the script.
2. Add Transaction Column fields to support the calculation (ie the term of the expected contract, # of expected transactions and expected growth rate).
3. A custom script was written with the calculation and validation logic and stored in the Custom Code Folder of the documents tab. This script was then added to form and various functions set to monitor the addition of each new element or change in value.

Workflow:

When the sales person uses the form and adds one of the long term contract items to the opportunity, the script automatically sets default values for the variables and calculates a default value for the opportunity. This saves the sales person some time but doesn’t restrict them. They can change each of the variables. As they do, the script ensures that the value entered is reasonable and calculates the effective quantity of business that the opportunity represents.

In this case, sales people were also permitted to set a custom price, again within a range. If this range was exceeded, the script alerted them that the price was too low or high and reset it. Finally, the quantity value was tied to the calculation so that the sales people could not arbitrarily estimate the value of the contract.

The result: rapid, reliable consistent opportunity projections. As a side benefit, we captured the calculation variables in the opportunity to help management identify the high growth, high value customers that they wanted to focus their team on.

Summary:

Scripting is a powerful tool for making NetSuite an even more powerful platform. When used with caution it can save you time while making your data and transactions entry more reliable.

Coming soon, another way to extend NetSuite – Excel web queries – are complex, live calculations in your future?

Friday, March 03, 2006

NetSuite Demonstrates Its Customer Focus

Running a software company is hard work. Maintaining a commitment to your customers at Internet speed is even harder.

NetSuite demonstrated today that they know how to do both when they responded to a thorny customer issue.

NetSuite is a powerful CRM/ERP application based on Oracle technology. In addition to its broad core functionality, NetSuite is very easily extended and customized to include all sorts of data. In fact, you can even build entirely new databases and applications in NetSuite leveraging NetSuite's hosting, application and database architecture.

Talk about Web 2.0!!! An Oracle 9i-based application infrastructure with web services and messaging gateways from $299 per month (with the NetSuite Limited licence package) -- something had to give. So last month NetSuite introduced charges for large databases. It didn't go over so well ...

At Skyytek, we are not only the largest and most successful NetSuite VAR. We are also a long-standing customer. We joined others in NetSuite's user group criticizing the policy, the limits set and the charges. Within a few days, NetSuite management intervened, explained the policy and agreed with the user community. They had overstepped. The limits were too low. They increased the limits -- 5-Fold!!!

There are two amazing things about this.

Firstly, NetSuite senior management read the user group - religiously. From professional services to customer support to product management and development, it is not at all unusual to get direct responses from executives responsible for entire divisions of NetSuite to particular users on very specific issues. It is really a very amazing commitment to customer service.

Secondly, it shows a willingness to admit mistakes and respond effectively. THAT may just be NetSuite's greatest asset. No software company can satisfy all of its users all the time. There will be issues and requested enhancements. No matter how well planned, it will always look a little like 'Whack-a-mole' to the user base. A little goodwill goes a long way in keeping users happy.

Like I said, it's hard running a software company. And with a new release just months away, the folks at NetSuite have their hands full. But it's days like this that make me glad to work with this excellent product.