Salto for
NetSuite
Articles
SHARE
Sonny Spencer, BFP, ACA
July 23, 2023
10
min read
About Salto: Salto's platform helps you and your team deploy, track, and manage your NetSuite customizations effortlessly. Learn more here.
NetSuite system performance is not something we normally talk about until there is a problem. And that is a problem. You have this high functioning, fully customizable platform at your disposal and yet system performance (which directly impacts the end users you support) is an afterthought, if that.
In this blog post, we are going to explore some of the common mistakes made when thinking about NetSuite performance. You will see that some mistakes stem from an aversion (whether intentional or not) to focusing on system performance, whereas other mistakes are the result of not having the right solution design. Combining the two is a recipe for disaster when it comes to system performance, so let’s take a deeper look at these common mistakes before wrapping up with 10 best practices for managing NetSuite performance going forward.
When a particular record type or function starts to take longer to load, edit, or save, it is easy to point the finger at NetSuite for the change in performance—when in fact the vast majority of system performance challenges are the result of internal customization that was completed without proper thought given to the system impact of such a change.
These issues are more prevalent in larger, more complex SuiteScripts and Workflows that have been overengineered to meet very specific business requirements. It is important to strike the right balance between finding the perfect solution and its impact to system performance. Equally important is to be transparent with your end users that perhaps 95% of the requirements will have a negligible impact to system performance but the remaining 5% is highly complex and is expected to have a more material impact to the system. In this case, end users should (hopefully) opt for the 95% solution and address the 5% in another way to keep the customization as simple as possible and maintain optimal system performance.
Salto Tip: When you next design a NetSuite customization, make sure to share the expected system performance impact of such a customization with your stakeholders so they can contemplate a revised scope (if necessary) that balances system performance with the need to solve the problem.
The best way to review your NetSuite system performance at a much deeper level is to leverage the NetSuite APM solution. This is a free add-on offered by NetSuite and can be downloaded from the SuiteApp Marketplace.
Navigate: Customization – SuiteCloud Development – SuiteApp Marketplace – Type “APM” in the search bar – Click on “Application Performance Management (APM)” tile - Install
Once you have installed the APM solution, consider the following steps:
(1) Perform an initial investigation of your system performance
(2) Identify the “problem children” by referencing response times - those with longer response times require further investigation
(3) Take remediation steps to address the issues - prioritize based upon records most heavily used in the system with the highest response times.
For a more detailed walkthrough of the above process, check out this blog post: “Is NetSuite running slow? Find out why”
Not every NetSuite customization needs to execute point in time (think user event/client script). In fact, when designing a custom NetSuite solution, serious thought should be given as to whether that particular process can be executed on a scheduled basis, daily perhaps.
If you plan to transform field values on a form based upon user input, or input from an external source, consider whether that transformation needs to happen at the time the record is created/edited or whether the transformation can take place later in the day or possibly overnight. Another consideration is the volume of records that the customization will impact. If it will impact a large number of records, there is benefit to running the transformation outside of business hours, so as to not cause disruption during peak system usage.
When scheduling a process it is important to identify the appropriate script type. Many users will opt for the more traditional scheduled script when in fact they would be better served deploying a map/reduce script. In general, map/reduce scripts should be leveraged when processing large volumes of data, as the script will run more efficiently when compared to a scheduled script. For lower volume updates, a simpler, scheduled script should suffice.
Salto Tip: Run scheduled scripts during “off peak” hours for your business. If your business operates 24/7, then consider times that will be least impactful or, better yet, consider if the process can instead be run weekly, over the weekend.
As NetSuite Administrators and Developers, we spend a lot of energy and focus on new system customizations. As a result, we do not allow ourselves the time to take a step back and manage any cumbersome technical debt that has built up over the years of using the system.
It is imperative that system performance improvements are baked into your development lifecycle. This may come at the expense of not completing every system enhancement requested, but it is important to remind your end users of the importance of system performance—especially as they will be the first to report performance issues. Carve out the time to focus on these improvements and your end users will thank you for it in the long run.
One way to influence the decision to allow time for performance improvements is to be transparent with your end users. Show them the latest NetSuite APM dashboard so they can better visualize the challenges you plan to tackle. Take it one step further by showing them the system performance results before and after an improvement that was recently implemented.
Evaluating the system performance before undertaking any major NetSuite enhancement is essential. In some cases, the enhancement may be focused on improving system performance, e.g. reducing the time taken to integrate 1,000 sales orders from external CRM to NetSuite. In this use case, the need to measure the performance before and after is obvious, but for other system customizations we often forget about the performance.
Not only is it important to capture the system performance beforehand, it’s also important to capture the system performance afterward. Your customization could check every box during testing and be ready for Production migration, but once it’s migrated and users start to complain about how slow a particular record has become to work with, you may find yourself either spending time trying to figure out which customization is causing the issue or, after finding the issue, needing to rollback the change because the impact to performance was too severe.
Another great way to challenge user requests, to determine their validity/priority, is to share the current performance of the record(s) they would like to enhance and confirm whether they are open to any level of performance impact if the proposed changes are made. I wonder how many requests would get deprioritized if this approach was adopted more broadly.
Salto Tip: Take screenshots of system performance details both before and after deploying a customization in your NetSuite Sandbox account and share this with your stakeholders. This will help to keep stakeholders accountable for the impact that changes they propose may have on system performance.
Saved searches can get complex very quickly and will vary in performance largely based upon the volume of data that is being looked up. For example, if you are running a transaction saved search in a brand new NetSuite environment, you can expect the results to render almost instantaneously compared to an environment with millions of transaction lines where you should expect to wait a little longer for the results to render. Knowing this, here are a few specific recommendations for improving saved search performance:
Depending upon your NetSuite license tier and number of available SuiteCloud Plus licenses, your NetSuite environment may have different governance limits compared to other NetSuite customers.
One thing to consider is upgrading your NetSuite tier or purchasing additional SuiteCloud Plus licenses to enhance your existing governance limits, especially if scripts are failing to process or failing to execute after running out of available processing units. This also applies to API calls in/out of NetSuite and is even more prevalent when these calls involve large volumes of records. Before going down this route, it is recommended to work with NetSuite directly to perform a review of your account and see if your current NetSuite usage would qualify for an increased tier and/or additional SuiteCloud Plus licenses.
Even if you are not sure if your NetSuite environment is ready for an upgrade it is worth considering going through the system review process to help gauge where you are at today and identify how much runway you have before an upgrade might be required.
For more information on these best practices, check out this blog post that explores some of the things that NetSuite Developers and NetSuite Administrators overlook when working with NetSuite user roles and permissions.
NetSuite is a very powerful tool and, when implemented properly, it can truly be transformational. With great power (to customize) comes great responsibility in the form of maintaining the system. It is essential to keep system performance top of mind even shortly after implementing NetSuite. System performance challenges can get out of hand relatively quickly if not being actively monitored or remediated.
NetSuite provides all of the necessary tools to manage the system performance, so that is not the challenge. Instead, as NetSuite Developers and Administrators, we struggle to make the time to focus on system performance with the backlog of enhancements and development requests to be prioritized. It is important to remind your stakeholders of the importance of system performance and that it should be taken into consideration for all future system customizations. Sharing the direct performance impact of a proposed customization with the requester can be eye opening and can sometimes lead to the cancellation of requests where the requested functionality does not justify the system performance impact.
Salto for
NetSuite
NetSuite
SHARE
Sonny Spencer, BFP, ACA
July 23, 2023
10
min read
About Salto: Salto's platform helps you and your team deploy, track, and manage your NetSuite customizations effortlessly. Learn more here.
NetSuite system performance is not something we normally talk about until there is a problem. And that is a problem. You have this high functioning, fully customizable platform at your disposal and yet system performance (which directly impacts the end users you support) is an afterthought, if that.
In this blog post, we are going to explore some of the common mistakes made when thinking about NetSuite performance. You will see that some mistakes stem from an aversion (whether intentional or not) to focusing on system performance, whereas other mistakes are the result of not having the right solution design. Combining the two is a recipe for disaster when it comes to system performance, so let’s take a deeper look at these common mistakes before wrapping up with 10 best practices for managing NetSuite performance going forward.
When a particular record type or function starts to take longer to load, edit, or save, it is easy to point the finger at NetSuite for the change in performance—when in fact the vast majority of system performance challenges are the result of internal customization that was completed without proper thought given to the system impact of such a change.
These issues are more prevalent in larger, more complex SuiteScripts and Workflows that have been overengineered to meet very specific business requirements. It is important to strike the right balance between finding the perfect solution and its impact to system performance. Equally important is to be transparent with your end users that perhaps 95% of the requirements will have a negligible impact to system performance but the remaining 5% is highly complex and is expected to have a more material impact to the system. In this case, end users should (hopefully) opt for the 95% solution and address the 5% in another way to keep the customization as simple as possible and maintain optimal system performance.
Salto Tip: When you next design a NetSuite customization, make sure to share the expected system performance impact of such a customization with your stakeholders so they can contemplate a revised scope (if necessary) that balances system performance with the need to solve the problem.
The best way to review your NetSuite system performance at a much deeper level is to leverage the NetSuite APM solution. This is a free add-on offered by NetSuite and can be downloaded from the SuiteApp Marketplace.
Navigate: Customization – SuiteCloud Development – SuiteApp Marketplace – Type “APM” in the search bar – Click on “Application Performance Management (APM)” tile - Install
Once you have installed the APM solution, consider the following steps:
(1) Perform an initial investigation of your system performance
(2) Identify the “problem children” by referencing response times - those with longer response times require further investigation
(3) Take remediation steps to address the issues - prioritize based upon records most heavily used in the system with the highest response times.
For a more detailed walkthrough of the above process, check out this blog post: “Is NetSuite running slow? Find out why”
Not every NetSuite customization needs to execute point in time (think user event/client script). In fact, when designing a custom NetSuite solution, serious thought should be given as to whether that particular process can be executed on a scheduled basis, daily perhaps.
If you plan to transform field values on a form based upon user input, or input from an external source, consider whether that transformation needs to happen at the time the record is created/edited or whether the transformation can take place later in the day or possibly overnight. Another consideration is the volume of records that the customization will impact. If it will impact a large number of records, there is benefit to running the transformation outside of business hours, so as to not cause disruption during peak system usage.
When scheduling a process it is important to identify the appropriate script type. Many users will opt for the more traditional scheduled script when in fact they would be better served deploying a map/reduce script. In general, map/reduce scripts should be leveraged when processing large volumes of data, as the script will run more efficiently when compared to a scheduled script. For lower volume updates, a simpler, scheduled script should suffice.
Salto Tip: Run scheduled scripts during “off peak” hours for your business. If your business operates 24/7, then consider times that will be least impactful or, better yet, consider if the process can instead be run weekly, over the weekend.
As NetSuite Administrators and Developers, we spend a lot of energy and focus on new system customizations. As a result, we do not allow ourselves the time to take a step back and manage any cumbersome technical debt that has built up over the years of using the system.
It is imperative that system performance improvements are baked into your development lifecycle. This may come at the expense of not completing every system enhancement requested, but it is important to remind your end users of the importance of system performance—especially as they will be the first to report performance issues. Carve out the time to focus on these improvements and your end users will thank you for it in the long run.
One way to influence the decision to allow time for performance improvements is to be transparent with your end users. Show them the latest NetSuite APM dashboard so they can better visualize the challenges you plan to tackle. Take it one step further by showing them the system performance results before and after an improvement that was recently implemented.
Evaluating the system performance before undertaking any major NetSuite enhancement is essential. In some cases, the enhancement may be focused on improving system performance, e.g. reducing the time taken to integrate 1,000 sales orders from external CRM to NetSuite. In this use case, the need to measure the performance before and after is obvious, but for other system customizations we often forget about the performance.
Not only is it important to capture the system performance beforehand, it’s also important to capture the system performance afterward. Your customization could check every box during testing and be ready for Production migration, but once it’s migrated and users start to complain about how slow a particular record has become to work with, you may find yourself either spending time trying to figure out which customization is causing the issue or, after finding the issue, needing to rollback the change because the impact to performance was too severe.
Another great way to challenge user requests, to determine their validity/priority, is to share the current performance of the record(s) they would like to enhance and confirm whether they are open to any level of performance impact if the proposed changes are made. I wonder how many requests would get deprioritized if this approach was adopted more broadly.
Salto Tip: Take screenshots of system performance details both before and after deploying a customization in your NetSuite Sandbox account and share this with your stakeholders. This will help to keep stakeholders accountable for the impact that changes they propose may have on system performance.
Saved searches can get complex very quickly and will vary in performance largely based upon the volume of data that is being looked up. For example, if you are running a transaction saved search in a brand new NetSuite environment, you can expect the results to render almost instantaneously compared to an environment with millions of transaction lines where you should expect to wait a little longer for the results to render. Knowing this, here are a few specific recommendations for improving saved search performance:
Depending upon your NetSuite license tier and number of available SuiteCloud Plus licenses, your NetSuite environment may have different governance limits compared to other NetSuite customers.
One thing to consider is upgrading your NetSuite tier or purchasing additional SuiteCloud Plus licenses to enhance your existing governance limits, especially if scripts are failing to process or failing to execute after running out of available processing units. This also applies to API calls in/out of NetSuite and is even more prevalent when these calls involve large volumes of records. Before going down this route, it is recommended to work with NetSuite directly to perform a review of your account and see if your current NetSuite usage would qualify for an increased tier and/or additional SuiteCloud Plus licenses.
Even if you are not sure if your NetSuite environment is ready for an upgrade it is worth considering going through the system review process to help gauge where you are at today and identify how much runway you have before an upgrade might be required.
For more information on these best practices, check out this blog post that explores some of the things that NetSuite Developers and NetSuite Administrators overlook when working with NetSuite user roles and permissions.
NetSuite is a very powerful tool and, when implemented properly, it can truly be transformational. With great power (to customize) comes great responsibility in the form of maintaining the system. It is essential to keep system performance top of mind even shortly after implementing NetSuite. System performance challenges can get out of hand relatively quickly if not being actively monitored or remediated.
NetSuite provides all of the necessary tools to manage the system performance, so that is not the challenge. Instead, as NetSuite Developers and Administrators, we struggle to make the time to focus on system performance with the backlog of enhancements and development requests to be prioritized. It is important to remind your stakeholders of the importance of system performance and that it should be taken into consideration for all future system customizations. Sharing the direct performance impact of a proposed customization with the requester can be eye opening and can sometimes lead to the cancellation of requests where the requested functionality does not justify the system performance impact.