Mastering DCAA Compliance

The federal government signs over 11 million contracts annually, and approximately 95% are awarded to small- and medium-sized businesses. Steady cash flow and profitable, long-term contracts are just a few significant reasons these contracts are valuable to businesses.


Once awarded a government contract, companies must comply with regulations set forth by the DCAA, or the Defense Contract Audit Agency. These companies should, therefore, maintain business systems that facilitate that compliance.



Some of the elements of compliance include:

  • Maintenance of accurate payroll and time-keeping records
  • Implementation of DCAA-compliant accounting systems
  • Production of accurate documentation for audits
  • Cost-tracking
  • Following government-issued checklists

DCAA Compliance Blog Image 1

Being Prepared for DCAA Audits

The DCAA performs contract audits that affect negotiations with over 7,000 contractors annually to help enable and facilitate negotiations for which contracting officers are responsible. Although the DCAA has no actual role in determining which companies are awarded contracts, they provide recommendations to those who select the contractors.


The DCAA iterates on its website that its role “in the financial oversight of government contracts is critical to ensure DoD gets the best value for every dollar spent on defense contracting. DCAA operates under the authority, direction, and control of the Under Secretary of Defense (Comptroller)/Chief Financial Officer.” Overall, its main function is to conduct audits on contracts and financial advisory services to determine if those contract costs are “allowable, allocable, and reasonable (or not).”



Due to the firm requirements of the DCAA, businesses must be prepared for possible audits. Manual or disconnected software systems that are both time and labor-intensive won’t cut it.  Instead, automated processes on a unified ERP platform that include pre-built DCAA compliance capabilities should be in place from the get-go. Without a system such as this, it would be difficult for various departments to collaborate on a single platform, which causes many challenges when trying to produce a report or a specific document for the DCAA.



“To be more prepared for audits, organizations need to define business process flows, that a) work with your current business processes, and b) are expandable for other business processes. Also, having someone on your team available who has experience in how these processes flow and can provide guidance is quite important. Before implementing any new systems, nailing these two things down is paramount,” explains David Tillotson, Director of Solution Engineering at Caravel.


Audits can result in negative findings such as overpayments, unallowable costs, fraud, and mismanagement. These results are reported to the Department of Defense and the contractors themselves, who are responsible for rectifying issues.



For non-compliance, consequences include civil and criminal penalties, voided contracts, and companies being completely barred from ever doing business with the government in the future.

DCAA compliance blog image 2

Meeting DCAA Requirements

Automation in lieu of manual processes is a no-brainer in facilitating compliance with DCAA requirements. Unmatched by spreadsheets, an automated and singular solution approach to time entry, labor costs, accounting, billing, and reporting will not only bring various departments on the same page but will also greatly facilitate compliance and communication. Disparate systems—such as utilizing QuickBooks and spreadsheets—only make compliance more difficult.



“Many organizations have relatively complex percentage-based calculations based off cost pools,” notes Tillotson, “and if mistakes are made, it throws off the reporting. Automating these processes eliminates the potential for these types of errors. Time spent on manual processes requires a significant amount of effort compared to automated processes.”



Let’s review some of the compliance requirements:




Tracking time is essential for DCAA compliance, as this data is the foundation for reporting. Time reporting, daily time entry, time approval, time entry updates, cost pool association, and employee training are all required for best practices as laid out by the DCAA. The DCAA will occasionally conduct random checks at the vendor’s site, where they will speak with employees and inspect time sheets to ensure they’re completed daily.



Cost Segmentation

As part of qualification for compliance, companies are required to classify costs as direct or indirect; direct costs are grouped separately from those that are indirect. Direct costs are traced to specific projects, while indirect costs are shared resources across internal activities (e.g., R&D, Bid and Proposal, Operations). This allocates what the contract is responsible for in terms of operational overhead.



Financial Management

An accurate view of the financial performance of each project must be clearly laid out. Recording what was spent, as well as classifying expenses and revenue by category (e.g., rent, accounting, or services) is essential. Tracking and separating allowable costs (reimbursable by the government) from unallowable costs (cannot be charged to the government) must also be recorded and reported.



Labor Distribution

This report relays the hours worked and cost per employee and is divided by project and cost pool.



FAR and CAS Compliance

Government contractors must also be consistent with Federal Acquisition Regulation and Cost Accounting Standards to comply with the DCAA. Accounting practices must be disclosed along with evidence of compliance.



These requirements prevent fraudulent billing; by default, they become legal documents and must be accurate. Promoting transparency and accountability is essential to DCAA compliance. “When it comes to reporting to the DCAA, manually filling out forms and spreadsheets takes an exorbitant amount of time, whereas an automated system will generate it for you for every single invoice, as well as for any on-demand reporting needed,” says Tillotson.

A Complete Compliance Solution

A unified, cloud-based ERP, together with a fully integrated DCAA solution, will enable government contractors to carry out all the above requirements smoothly.



For NetSuite users, meeting regulatory requirements set forth by the DCAA can be achieved through Caravel’s DCAA Compliance SuiteBundle, which controls common variables across various businesses. Although NetSuite is a GAAP-compliant accounting system, there are key regulations to which it does not comply. The SuiteBundle is built directly into NetSuite to supplement the functionality necessary for DCAA compliance.



Join the DCAA subject matter experts at Caravel on March 29, 2024, in a live webinar where we will show you how to master compliance in NetSuite. Register here.

The Power Behind NetSuite Analytics Warehouse

Data is quite possibly the most valuable business asset. Information from various business departments accumulates over the years and tells the story of an organization.  It can provide invaluable insights into the future of that business and requires the utmost care in storage and management. In many cases, the various data from each entity is stored separately and in different formats, making it cumbersome, unmanageable, and overwhelming.

Challenges in the Dataverse

The rate of data among enterprises is growing at a rate of 40-60% each year. This rapid expansion makes the storage, management, and utilization of that data more and more challenging and can greatly affect growth. Hindrances to the effective use of data include siloed data sources, a shortage of experts who can analyze big data, extracting meaningful insights that lead to actionable intelligence, as well as the security of data.

“Data-driven companies are those with a certain data maturity and literacy across the organization, where employees value the power of data,” explains Ashish Tamboli, EPM Senior Consultant at Caravel. Tracking, reviewing, and analyzing data and trends over time can greatly help organizations to better understand which processes need to be fixed and which are performing well. Data helps leadership create strategy based on evidence and to better understand customers—where they come from, what propels them to buy, and perhaps why certain items have high return rates. Simply put, having organized data helps businesses make more informed decisions, improves customer relationships, and increases revenue.


What is NSAW?


NSAW, or NetSuite Data Warehouse, is a cloud-based data storage and analytics solution for NetSuite ERP users that marries data and analytics along with AI and Machine Learning (ML). This allows users to speed up their decision-making processes and convert them into actionable results. NSAW employs the power of the Oracle Analytics Cloud, which is backed by the Oracle Autonomous Data Warehouse. This allows users to build and run analyses and visualizations quicker and without the need for their IT department.

Effectively solving data management challenges, NSAW brings together ALL data sources, including NetSuite Finance and Operations data, and other sources a business may use such as Shopify data, Salesforce data, Google Analytics, and many more that allow a business to turn off legacy systems that no longer serve it. NSAW also reduces the heavy task of migrating data and offers self-service analytics and automated reporting from multiple sources.

NSAW allows its users not to look at data in isolation, but rather from an entire workflow perspective to more easily identify patterns, understand what the data is revealing, and make true, data-driven decisions.

NSAW dashboard

NSAW propels businesses to make faster, more cost-effective decisions by:

    • Streamlining data management and ease of access.

    • Fast-tracking business insights and solving business challenges.

    • Reducing IT costs and complexity.

    • Eliminating reliance on spreadsheets.

    • Giving direct access to historical data.

    • Simplifying reporting by eliminating the need for presentations.


AI Capabilities

The power of artificial intelligence drives NSAW to validate, centralize, and connect sources of data from unrelated operational systems, thereby granting access to the most up-to-date data that is consistent and whole. This reduces human error, as well. Always on the job and running in the background, it allows for speedier insights and produces a clear look into financials and operations by utilizing pattern recognition, outlier detection, automatic forecasting, and predictive modeling. AI makes analyzing trends and creating reports based on the most current and historical data. By processing large data sets from multiple sources, NSAW reveals the value that would otherwise be buried by legacy systems.

How Historical Data Adds Tremendous Value

Historical data is classified as past (pre-NetSuite migration) ERP transactional information on sales, products or services, customers, and suppliers. Businesses are required to retain this information for financial and legal purposes, and it’s typically stored in siloed, legacy in-house systems with restricted access to preserve its integrity. This data is rich with information and lessons from historical operational performance as well as the customer and explains a lot about current facts and figures. It also plays a large role in forecasting, which allows businesses to plan for change.

Money is spent to safeguard, monitor, update, and patch this data – and this requires expertise to guard it against security threats. Over a seven-year period, these costs add up. This is where a centralized, cloud-based system can eliminate all the issues that segregated and costly historical data causes.

Benefits include:

    • A single source of truth for all business transactions.

    • Secure, reliable, and accessible data.

    • Direct access to historical data.

    • Ease of use out-of-the-box for immediate results.

    • Multiyear trend reporting alongside current data, allowing for cause-and-effect analysis.

    • Solid customer data, allowing businesses to identify pertinent information on loyal customers.

    • Viewable multiyear purchase trends that blend historical data with current eCommerce data.

    • Website and CRM data blended with historical data to reveal more about customer acquisition, which is important for retention.


Unsiloed Data is Powerful Data

One of the biggest challenges that businesses face is having their data in silos as well as in many different formats. Getting access to their data is yet another issue they face, while the struggle with manual fatigue is next on the list. The cost implications of managing legacy data are an additional problem, but all these issues can be easily solved.

Many NetSuite users have other systems and data sources within their organization that could offer tremendous benefits by adding additional context and a more thorough understanding of the past, present, and future. This diverse data can help detect early signs of change, allowing businesses to be more agile and adaptable.

new NSAW dashboard

Sources of internal data include:

    • Customer service data

    • eCommerce data

    • Marketing and social media campaign data

    • Legacy data

    • Spreadsheets

    • Website data and leads

Sources of external data include:

    • Employment data

    • Google search and Google ads data

    • Reseller data

    • Social media sentiment on competition

    • Supplier data

    • Subsidiary data

    • Trade events


All this highly valuable data isn’t being shared across the business, and as it accumulates, it gets stale if unused. 

There are many ways that data silos waste resources and reduce employee efficiency. According to Stitch Data, it can reduce the speed at which a company uses data to make decisions, permit poor collaboration among departments, incur unnecessary IT costs, and reduce the quality of data, thereby leading to poor analytics.

Centralizing data will unlock tremendous value and allow the business to safely retain the data and allow for access across departments, retire legacy systems that no longer serve a purpose, be rid of costly data migration projects, and allow for analysis of operations, trends, and performance over time.

Data storage scales according to a business’s needs and NSAW offers over 40 pre-built connections to sources such as Google Analytics, Shopify, payroll data, inventory data, HR data, Salesforce, and more. The challenges of integrating and managing data are minimized so users can focus on unveiling valuable insights that lead to more informed business decisions.

The visualizations and dashboards are comprehensive and easy to understand, while using the built-in ML models allows for predictive analysis.

NSAW dashboard 3

Painless Reporting


Manual reporting is an effort of the past. With NSAW, self-serve reporting is easy, with drag-and-drop features and a collection of visually appealing dashboards that offer key metrics from all over. Sales, inventory, financials, procurement, and more—these dashboards are easily customizable and offered in everyday language, making it simple. Meanwhile, AI runs in the background and offers features such as auto recommendations on the optimal visualization styles, helping to interpret results more quickly. Reports refresh themselves automatically, so the user is not constantly rebuilding them. No-code forecasting allows users to better plan and predict for the future. All this is presented on one screen, avoiding users jumping around to uncover inefficiencies and discover revenue opportunities.

NSAW offers KPIs and metrics for many different job roles, putting them in the proper context for each employee. This role-based analytical capability makes it simpler for users to view what is relevant to them. It also allows users to drill down from KPIs and charts and investigate elements at the transaction level. Its reporting capabilities reduce time spent on creating presentations by offering visuals that can directly export to various formats such as PDF, PNG, and XLS.

Spotting Key Revenue Drivers


One of the driving values of NSAW is cost savings. As a data migration solution, being able to store and access historical data without having to pay for other licenses is tremendous on the bottom line. NSAW, compared to other solutions on the market, allows current NetSuite users to save tens of thousands of dollars a year by consolidating their data in the warehouse.

“NSAW is a strategic investment for data-driven companies to gain valuable, immediate, and accurate insights, Ashish states. “Since many employees lack IT knowledge, NSAW acts as a self-serve tool that can be used with little to no IT support by leveraging pre-built datasets and reports.” This is where significant cost savings come in and eliminate the need for complete IT support, making users more autonomous and able to gain insights and delve into trends without relying on IT.

Once data has been effortlessly merged into NSAW and is centrally packaged with easy access, users can easily solve business problems and make more informed decisions. Running autonomously in the cloud, a prebuilt data pipeline automates the flow of NetSuite ERP data into the Warehouse (daily or at other frequencies); automations organize the data so it’s usable and accessible—thereby eliminating the need for an IT team to run it. As Ashish points out, “NetSuite ERP is not enough of a system to give you insights into your data. Users need to have the capability to slice and dice data to get more meaningful outputs and compare trends. This is where NSAW comes in and allows users to compare trends over time.”

NSAW consolidates information and centralizes assets, giving relevant data to end users—anytime, anywhere.

Caravel can help accelerate the implementation of NetSuite’s Analytics Warehouse so that your teams can all be on the same page when it comes to data and insights.

Watch the on-demand webinar, Harnessing the Power of Your Analytics With NSAW, and learn more about this extraordinary program that will propel your organization to the next level.  

The NetSuite 2023.2 Quick Guide

Author: Tom Pearce Sales Marketing Coordinator

NetSuite is releasing their newest update called NetSuite 2023.2 for the beginning of Autumn, much like the 2023.1 update they released at the beginning of the year, NetSuite 2023.2 is full of new ways to improve your business processes and improve user experience and adoption. At Caravel, we wanted to provide a targeted summary on what new features NetSuite is bringing to its users, if you want to learn more, we highly encourage you to look at the full release notes available to you in your NetSuite portal home screen. If this makes you eager to start with NetSuite 2023.2, please reach out to your Project Manager.

Striving for Warehouse and Manufacturing Efficiency:

NetSuite understands that the strain on supply, and the effect it has on fulfilling customer demand has not wavered at all. With NetSuite 2023.2 release, NetSuite is making their user’s warehouse and manufacturing management even more accessible. NetSuite has updated its mobile application offerings, improving warehouse speed and accuracy with Smart Count barcode scanning, both of which can save you on shipping and more!

The NetSuite 2023.2 release has provided users of the Supply Chain Management (SCM) app with huge updates to its user experience. They have made the navigation smoother and focused on making it user-friendly by simplifying roll changes and allowing user preferences. The update also streamlines the NetSuite Warehouse Management App. Allowing supervisors the expedience in reassigning employees, custom picking orders, and more to help reduce friction in your warehouse on both the supervisor and picker levels.

To help users save money with shipping NetSuite is making it possible to use NetSuite Ship Central to shop for the best rates, create return labels, calculate cost based on weight, and more. Just like the SCM app, user experience is improving for shipping as well allowing for user preferences, workflows, and more automation for customers using Shopify and Amazon. The NetSuite Connector is bringing users the capability to eliminate manual reconciliation for Shopify and Amazon. Users can also sync shipping services that are purchased from Amazon to NetSuite thus simplifying order fulfillment and reducing costs.

Learn more about how the 2023.2 update can improve your warehouse and manufacturing here.

Improving Your Employee Experience and Confidence:

With a tool like NetSuite, it is easy to get lost in all its capabilities and functions. Having to search for solutions, look at notes, or any other way users might help themselves navigate NetSuite slows down the processes and causes interruptions throughout the day. NetSuite 2023.2 aims to eliminate the pause in work to look up a “how to” guide and have implemented NetSuite Guided Learning. The NetSuite Guided Learning experience was built with a focus on streamlining user experience and eLearning. NetSuite Guided Learning now offers users visual walk-throughs, step-by-step guidance, progress tracking and self-managed learning tailored to the users’ roles.

Learn more from NetSuite here.

There’s no denying the importance of data in today’s business environment. Shifting costs, volatile economic conditions, and intense competition necessitate data-driven insights. Yet, many companies encounter roadblocks when it comes to making data usable.

Operational and Financial Focus:

Improving efficiency to reduce business spending while seeing an increase in productivity and growth is one common goal for businesses. NetSuite understands this and NetSuite 2023.2 is providing you with the tools to achieve this. Some of what NetSuite 2023.2 is doing to reach that goal is increasing its use of automation, reducing tedious tasks, and making bill paying simpler.

NetSuite states that the automation in their NetSuite Account Reconciliation tool “automates the entire reconciliation process for the general ledger including intercompany transactions, accounts receivable (AR) and payable (AP), bank and credit card transactions, accruals and fixed assets accounts, and other balance sheet accounts”. This will completely remove the need to pull and makes sense of data from multiple sources manually. With machine learning and NetSuite’s auto-match engine users will be able to have millions of transactions matched in minutes and accounting teams will only need to focus on the exceptions, high-risk, and strategic tasks.

NetSuite is also making updates to the NetSuite Bill Capture, Vendor Invoice Distribution SuiteApp, and NetSuite AP Automation to reduce the workload for accounts payable teams. Users will be able to lean on the machine learning in the NetSuite Bill Capture feature to organize expenses based on past bills and will provide recommended subsidiaries. Teams will be able to expedite the bill-paying process by allowing for batched approvals with the Payment Approval Routing now offered in the NetSuite AP Automation. Also, if you have teams that need to share costs now the Vendor Invoice Distribution SuiteApp allows them to simply distribute costs by percentages or amounts and once the distribution is completed, the SuiteApp automatically creates the needed entries.

There is much more to see about this update here.

This is just the surface of what NetSuite is offering in the NetSuite 2023.2 update. To learn more, you can look here or on your NetSuite environment home page. We at Caravel are excited for these updates to be implemented. We are also always ready to talk you through what and how integrating these can improve your business.

The NetSuite 2023.1 Quick Guide

Author: Tom Pearce Sales Marketing Coordinator

We are past the start of the new year, which means we are finding our footing and life is moving back to normal. This also means there are some very exciting new opportunities on the horizon for us to present to you, and NetSuite has already delivered on one of them.

NetSuite is kicking off the new year by showing us several updates to improve business processes already. They have brought out the sneak peak of NetSuite 2023.1, and we at Caravel are excited to break down the highlights and explain what you can expect us to be implementing this year. If you want to learn more about any of the following, feel free to check the home screen of your NetSuite portal. Learn how to start with the 2023.1 update by reaching out to your Project Manager.

With improved CRM, CPQ, inventory management, data-based recommendations, and more, this first update of 2023 is packed with new tools for your business.

Improving Personnel Management:

NetSuite’s 2023.1 brings with it several tools that will improve tracking productivity while alleviating some of the stress of adjusting wages. Your team can now automate wage calculations with a NetSuite Payroll integration, allowing you to easily capture schedules and adjust wages based on a more accurate review of hours worked.

Utilizing this feature will also open more opportunities to improve customer satisfaction. You will be able to track workforce insights—such as sales data—to learn and follow trends to guarantee you have the scheduled staff to ensure customer satisfaction.

Another interesting element is a more complex employee time tracker. NetSuite explains that this will be beneficial for industries that need to track employee time more specifically. For example, it can track how much time an employee in an office setting puts toward projects and clients, or how much time an employee in a driving industry is traveling before their mandatory rest period. Employees will be able to easily adjust their status and have it accurately tracked to make billing easier, as well as maintaining safety regulations for truck drivers. NetSuite has an article that breaks down more of the impressive opportunities with this tool here.

Simplified Financials:

In the NetSuite 2023.1 update, vendor billing will be simplified by applying automation. NetSuite AP Automation is a new feature that allows you to upload your vendor bills with an email to NetSuite to be processed automatically. Then, a digital version is created and all the important details (vendor name, PO number, items ordered, quantity, pricing, etc.) are populated and matched to the correct purchase order.

If you offer subscription-based services to your customers, this release permits you to easily adjust and plan for percentage changes to apply to any of your subscribers. Learn more about these and some other interesting new features for rebates, nonprofits, and more here.

Warehouse and Shipping Efficiency:

The new NetSuite Ship Central is going to save your warehouse employees time and money. This update allows your warehouses to track if there are multiple orders going to one customer, consolidate, and efficiently ship the orders, thus reducing the number of shipments to a single location. It can even help you improve your order picking process.

With the NetSuite Warehouse Management System update, you can even section your warehouse into zones and allow multiple employees to pick order items based on zones, then pool items together for packing. Teams will be able to easily mark orders as partial or complete while also tracking empty bins or damaged goods in their sections to expedite restocking. There are some other very helpful updates for warehouse teams like improved smart counts and reports that you can read about here.

Improving Your Customers Experiences on Multiple Levels:

Utilizing the NetSuite 2023.1 update aims to not only improve your internal business processes but also to assure you are providing your customers and end users with the best service possible. With improved CRM, CPQ, inventory management, data-based recommendations, and more, this first update of 2023 is packed with new tools for your business. We can’t wait to help you learn and implement these features to help expand and optimize your business. To start, reach out to your project manager. If you haven’t started with Caravel yet and want to learn more about how we can help integrate these new features to serve your business, we are always ready to talk.

The Dos and Don’ts of Performance and Optimization Inside NetSuite

Author: Luke Pirtle, Director of IP Development


Performance inside NetSuite is usually done incorrectly due to misunderstandings on where to optimize, what to optimize, how to optimize it, and what NOT to optimize.

There are numerous statements and definitions of good code all over the internet written by various people with varying credentials. Most definitions bear a resemblance to the following.

The code must be:
• Readable
• Scalable
• Testable
• Fail Gracefully
• Easily Extendable
• Reusable

The biggest takeaway from this list is that performance is toward the end of the list. A few will even mention avoiding premature optimization, stating it’s harmful. It cannot be overstated that quality code is not the fastest-running code; rather, quality code follows the tenets above. If a solution is 10x faster but has intermittent errors and doesn’t indicate when it fails, you’ll end up with a client who is upset because their integration has been turned off for a month without any notice.

Performance should be considered but only after the other tenets are addressed. Typically, it’s also an afterthought and should only be done if requested. Rarely is there an issue with a solution being “too slow,” so there is no reason to risk the possibility of a bug or client escalation due to an unsolicited update. Before optimizing, always write good quality code.

Optimization: Breakout and Isolate

What needs to be optimized is commonly misunderstood. The first step in optimization is breakout and benchmarking to identify what needs to be prioritized. Developers typically want to create cool, clever solutions and use this as an excuse to theorize what needs an upgrade instead of investigating further. It can lead to severely overcomplicated data structures and algorithms because it’s fun, versus doing the legwork that will produce tangible results.

For example, I once had a solution that took mere seconds to commit a line on a sales order but was a painful UX experience. I optimized it with bulk searches and async calls and made it as streamlined as possible. Then, I discovered that my solution had never taken more than 0.1 – 0.2 seconds to run on average. The slowdown was due to the absurd number (over 250) of custom fields that were on the transaction line with over 25% being list / record fields. The system needed to work with those extra columns and references and that was taking 95% of the time needed to commit.

I had only shaved off tenths of a second at most and spent a week or two in the weeds. Testing the same pre-optimized code base on a standard form without these fields resulted in instantaneous performance. Without my investigation, the solution could never have taken less than the 2 seconds I started with. I was fighting an unwinnable battle. I only did this analysis at the end when I ran out of ideas on how to increase performance further. You need to start with the low hanging fruit and work your way up the tree. There are times you’ll need to climb all the way up to the top, but typically you can make quick and easy changes to optimize solutions to an acceptable range.

What to Optimize

HTTPS Requests and Network Calls

Computers are fast and have been for a while. For a frame of reference—CPUs are rated in GHz which is measured as instructions/seconds. This means a 1 gigahertz (GHz) computer completes a billion clock cycles per second. However, HTTPS have an actual physical distance to travel and when you make a request it drastically slows things down.

Numerous strategies and caches are used by ISPs and data engineers to mitigate the number of calls and distance required for calls, but there is always a physical distance slowdown. HTTPS calls usually take 1.5 seconds on average and lines of code execute in less than a millisecond. HTTPS calls should be consolidated and minimized. It is far “cheaper” and more efficient to do client-side computations rather than multiple HTTPS calls. Bulk operations should be performed as well. For a simple analogue, consider going to the grocery store several times throughout the day for each ingredient versus going with a list and getting it all at once.

Optimization Tips:
• Try to consolidate multiple calls to external resources.
• Use Async calls, when possible, to unblock the CPU while these are working.
• Avoid unnecessary calls by removing any relics from your code.
• Use caching methodology and keep local copies of values and files when possible and only look them up when necessary.

API Calls

Most API calls in NetSuite initiate a request to the server, perform a database operation, or utilize some internal resource on their network. These requests are optimized and travel shorter distances but have the same detriments as the HTTPS calls mentioned above. Every search, query, record load, file saved, etc. makes a call to a server or database and should be minimized or consolidated in bulk.

Optimization Tips:
• Don’t use database operations unless you need them. Record.load should only be used if you are going to write to the record or get something only available by loading a record. Use the search module instead.
• Prioritize bulk searches. If you have to look up a value for each line on a transaction, identify all elements up front and run a search to get them all at once.
• Remove debugging logs from scripts once you have a working solution. Rather than removing all logs, keep the logs informative and useful by removing the “Got here” and spot check variable logs.
• Modify log levels when not debugging. Turn a script from “debug” to “audit” or “error” to prevent log noise and increase performance.


CSV import is a robust, simple, and very performant operation for updating and creating records in NetSuite. You can multithread imports, have them run on multiple queues, and disable scripts and workflows if you don’t need them. They can be manually used by non-functional resources but also triggered from server-side scripts for complex automations. You don’t have as much control over the logic as you do with a script, but it’s usually not required for bulk operations or can be done beforehand.

Optimization Tips:

  • SuiteCloud + Licenses are key. If you have 0 licenses, you have 1 thread and 1 queue for the entire account. If you have 1 license, you have 2 threads and 5 queues which is roughly 10x the speed. SuiteCloud + licenses can be prohibitively costly, so design after you take this into consideration.
  • Use CSVs whenever possible. They are easy to setup, faster to execute than suite script, and provide built-in error handling. Developers tend to always favor scripts but the performance and simplicity of CSVs can’t be denied. Use the best tool for the job.

Map / Reduce for Multithreading

The Map/Reduce design pattern is powerful. However, developers usually just need a multithreading option and skip the map or reduce stage. Typically, the biggest slowdown / process intensive tasks are running a search, saving records, and network requests. Multithreading these elements scales down the highest latency code in your script, saving you precious time.

Optimization Tips:

• SuiteCloud + Licenses are key. If you have 0 licenses, you have 2 SuiteCloud Processors for the entire account. If you have 1 license, you have 5 threads with 5 time the speed. SuiteCloud + licenses can be prohibitively costly so design after you take this into consideration.

• Prefetch static values (meta data for queues)

• Break out searches if they are large and complicated. If possible, chunk out search pages to the map stage and run them there to multithread your search. This also prevents timeouts for large or complex searches.

  • Break out API calls into separate threads to multithread the most impacting part of development.

What NOT to Optimize

Anything at the JavaScript level, you do not need to optimize. You should not be trying to augment NetSuite code like Google or Apple. I can imagine the developers who use binary trees and layers of typescript screaming right now, but if you use binary trees in JavaScript and with NetSuite you are doing it wrong. There is no room for preference or subjectivity. This is the truth specifically for the NetSuite ecosystem due to its size and typical use cases. NetSuite’s core demographic is small to medium sized businesses and an enterprise level client here and there. This business model and demographic does NOT benefit from micro optimizations that can save milliseconds over millions of computations by leveraging advanced data structures and algorithms. If you are struggling that much you are on the wrong system or need to simplify your process.

  • Google developers deal with billions of search results, while NetSuite searches are capped at 10,000 data results.
  • Google deals with C++, Java, and Python. NetSuite uses a Java Virtual Machine to run JavaScript on an ECMA standard.
  • Micro optimizations are usually dependent on low-level understanding of processors, registries, and datatypes. JavaScript can’t do any of that because it only has one datatype for numbers and its “float.” JavaScript also can’t add correctly, which is why you will see gems like the screenshot below:

Typically, the overhead from advanced data structures and algorithms isn’t even realized until you get to large datasets that exceed the usual 10,000 elements. In JavaScript, sometimes this never happens. It’s actually harmful in the NetSuite ecosystem by adding extra overhead, test cases, and complexity, and it provides no benefit. Take a look at the example below using a benchmarking tool I created:

I wanted to know which array operation was faster in NetSuite. I had a Suitelet run both examples 100,000 times each and received the following results: 255ms vs 117ms.

I was able to run an entire benchmark of 100,000 iterations for both unit tests in significantly less time than a single average HTTPS request (1500ms).

Now, watch when I add a single log into this operation:

Twelve whole seconds versus the 0.152 seconds because I added a single log to each iteration.

Javascript code is fast, network request and API calls are not—use this information as best you can. Don’t overcomplicate your JavaScript; if you want to optimize performance, you can have much more impact by removing unnecessary logs first.

The strategy should not be how to implement a hashmap or binary search into your code to make things lightning fast, it should be how to implement these things to make better quality code. These features aren’t taboo, but rather their misuse is. I do not have a pet peeve against complex code—I write a lot of crazy Map / Reduce scripts and have even used classes on more than one occasion. The difference is I used a class because the data structures were polymorphic and benefited from the approach. Code can be basic and complicated as long as the complexity is not driven from a misguided attempt at optimization.

Advanced Archive File Manipulation In SuiteScript

Author: Luke Pirtle, Director of IP Development


This guide is technical in nature and details how to successfully unzip any archive file or folder inside of NetSuite and store the results in the file cabinet without the use of a middleware. While the compress module exists it is not sufficient for heavy lifting and this solution can resolve many use cases not supported by the official module.


When it comes to unzipping files most languages such as C++, Python, .NET, it’s mostly an afterthought. Even JavaScript can unzip files as numerous libraries exist but it’s not always straight forward to use most Node.js libraries inside the NetSuite ecosystem. The challenge is getting a library that works in the SuiteScript AMD module loader with minimal polyfill functions that doesn’t use ECMA script exceeding your current SuiteScript standard.

Due to these limitations the best solution is to add a middleware or redesign things completely. However, I recently ran into an unavoidable use case and neither was a satisfactory path. After extensive research and testing I’ve found a lightweight no hassle solution to work with archived files / folders. At some point NetSuite might release updates to the compress rendering this unnecessary but until then this should address these issues


he solution is simply the impressive JSZip library but getting the library to work in NetSuite is not simple


This is the key and most important piece. The current version of the JSZip library is 3.X and utilizes some impressive asynchronous functions and patterns for better performance. Despite trying every syntax and asynchronous method this new version is incompatible with the ECMAScript standard and NetSuite configuration in SuiteScript. Every permutation will eventually break right before reading the file contents.

However, the 2.7 version works and doesn’t include the asynchronous components. This stripped down version has all the capabilities without the unnecessary advanced asynchronous features and is fully compatible with the 2.1 SuiteScript ECMA script configuration.

Loading the module in a Suitelet:

NetSuite uses an AMD (Asynchronous Module Definition) loader. This is the biggest hindrance in getting Node.js modules to work. Fortunately, JSZip has a minified singular file that can be dropped into NetSuite. Below I detail how I load the module but I’ve also included the author’s notes on how it’s loaded in the system to give a full picture of what is happening.

Working with 2.7

I have the minified JSZip file in my project library folder and below demonstrate how to load it.

This allows the creation of new JSZip Instances to work with archives. With this configuration, the issue is much more straight forward now as we only have to write code. Sample code is detailed further down and documentation on the older version can be seen in their upgrade guide linked below

Sample Code

This solution below loads an archive file which is a folder with ~numerous files of differing types and is an excellent example. The code reads the archive file using the N/file module, then it iterates through each file and then creates a corresponding file in the file cabinet.

In my code snippet above you’ll notice the references to base64, this is because NetSuite uses base64 for essentially everything non-plaintext and files are no exception. Fortunately JSZip can handle this. Grab the contents of your archive file via N/file use the “getContents()” method to return the base64 content of the archive file. Drop that into the JSZip initialization (line 64) with the base64 argument set and now you have a valid JSZip Archive instance object loaded via SuiteScript. To create files you’ll simply need to iterate through the files subobject and then run the JSZip “file” method to read the contents. When creating files in NetSuite you’ll need to once again consider base64. Text is needed for text files and Base64 for anything else. To determine what is needed, look at the file extension. Once you have encoded your file simply save it and you now have a file committed to the file cabinet. Below I have a text reference for copying and utilizing in your own solutions.

Plaintext Reference for (Ctrl + C):

let extensionMapping = {
    'XML': file.Type.XMLDOC,
    'html': file.Type.HTMLDOC,
    'PDF': file.Type.PDF,
    'JPG': file.Type.JPGIMAGE,
    'BMP': file.Type.BMPIMAGE,
    'xlsx': file.Type.EXCEL,
    'txt': file.Type.PLAINTEXT,
    'json': file.Type.JSON

let plainTextTypes = [

let archiveFile = 57163;
let archiveFolder = 56852;
let xactimateTestArchiveTargetFolder = 2510;

let zipFileObj = file.load(archiveFolder);
let bin = zipFileObj.getContents();

var ZipInstance = new JSZip(bin , {base64: true});
for (let fullPathFileName in ZipInstance.files){
    if (fullPathFileName.indexOf('.' !== -1)){
        let fileName = fullPathFileName.split('/').pop();
        let fileExt = fileName.substring(fileName.lastIndexOf('.') + 1).toUpperCase();
        let netsuiteExt = extensionMapping[fileExt];
        log.debug({title:`File to ${ netsuiteExt ? 'Create' : 'Ignore' }`, details:`FileName: ${fullPathFileName}, fileType:${fileExt}, NetSuiteType: ${netsuiteExt}`});
        if (netsuiteExt){
            let data =ZipInstance.file(fullPathFileName).asBinary();
            if (plainTextTypes.includes(netsuiteExt) === false){
                data = JSZip.base64.encode(data);

            let zippedFile = file.create({



5 Reasons to Use Cloud ERP to Automate DCAA Compliance

5 Reasons to Use Cloud ERP to Automate DCAA Compliance

Whether securing their first government contract or acquiring larger opportunities, companies of all sizes need a DCAA compliance solution that’s built into NetSuite Cloud ERP to create a complete business management solution. Here are five reasons why:

1. A requirement for any organization that wants to do business with the DoD, DCAA compliance ensures that all of its trading partners are using proper financial management techniques in the course of business. Responsible for performing all audits for the U.S. DoD and for providing accounting and financial advisory services to DoD components responsible for procurement and contract administration, the DCAA also provides contract audit services for other government agencies.

2. Where the Lockheed Martins and Raytheons of the world may have complex systems in place to ensure DCAA compliance, small to midsized businesses (SMBs) don’t always have these resources at their avail. A smaller organization that relies on older, on-premises software systems and Excel spreadsheets to run its operations, for example, may be caught off guard upon being awarded its first government contract. An excellent opportunity to expand its horizons, the company may quickly find itself mired in the idiosyncrasies of maintaining DCAA compliance. 

3. If you’re awarded a government contract, the government agency will request detailed information regarding contract-related transactions such as procurement, revenue, and time entry postings. DCAA also mandates how you structure and report against your financials. These requirements directly impact how a company sets up its chart of accounts, reports on that chart of accounts, and then manages financial allocations. Handling these responsibilities manually or using disconnected, on-premises software systems is both time- and labor-intensive, not to mention error-prone. By automating these processes on a unified cloud ERP platform that includes pre-built DCAA compliance capabilities, companies of all sizes can easily gather, retain, and generate everything they need to win a contract and maintain compliance. 

4. Without a centralized system to refer to, companies also grapple with poor operational visibility for their government contracts. When sales, procurement, and fulfillment managers can’t collaborate on a single system, they must resort to emailing spreadsheets and documents back and forth every time a company has to produce a report or a specific document to the DCAA. 

5. Once in place, the DCAA SuiteBundle automates time entry, labor costing, accounting, billing, and reporting in a way that disparate solutions and spreadsheets can’t match. The SuiteBundle also makes the DCAA’s strict payroll and time-keeping requirements much easier for SMBs to manage. And while some solutions on the market tackle just the time-keeping task, Caravel Partners enhanced the NetSuite Cloud ERP time entry module to be able to handle all of DCAA’s time-related specific requirements.  

Caravel’s DCAA Compliance SuiteBundle is built directly into NetSuite and supplements the functionality that companies need to comply with DCAA rules and regulations. The DCAA SuiteBundle can be implemented either during or post a base ERP implementation, with the typical time frame spanning four to five months (for both the ERP and the SuiteBundle). 

By automating processes and tasks that were previously handled manually, the DCAA SuiteBundle frees up employees to focus on more important projects. It also provides an excellent audit trail for DCAA and its third-party audit agencies. 

Whether your company is on the verge of winning a large government contract and in need of its first DCAA compliance software or already using one and unable to handle the complexities of larger contracts, NetSuite ERP plus the pre-built DCAA SuiteBundle can accommodate organizations of all sizes and across all industries.

A Unified ERP Solution for DCAA Compliance | WhitePaper

Whether securing their first government contract or acquiring larger opportunities, companies of all sizes need a DCAA compliance solution that’s built into NetSuite Cloud ERP to create a complete business management solution.

Every year, the U.S. federal government spends trillions of dollars procuring the goods and services that it needs to keep its many different departments running. In 2020 alone, it spent $6.55 trillion, [bm1] a portion of which involved deals with government contractors, the largest of which includes well-known organizations like Lockheed Martin, Boeing, General Dynamics, and Raytheon.

Download our WhitePaper to learn more.

Shipping Integration with NetSuite ERP

Learn How NetSuite’s Quality Management Bundle Can Help Your Business

Designing, manufacturing, distributing, and selling a product of high quality does not happen by accident, it requires a company-wide commitment to enforcing policies and standards. NetSuite’s Quality Management solution has been designed to help you deliver the highest quality in your products with minimal overhead regardless of the size and complexity of your business and product line.

 Key Benefits 

  • Formalize quality policies, standards, and practices. 
  • Improve product quality. 
  • Initiate quality activities from business transactions. 
  • Work with large volumes of raw data sets. 
  • Collect in-process and incoming inspection results. 
  • Compare to the pass/fail criteria. 
  • Integrated non-conformance reporting. 
  • Reduced cost of quality.


The inspection record defines exactly what it is that you want your quality engineer to check. These inspection records can be re-used so, for example, you only must create a “check for material certificates” inspection once—these are later grouped into specifications that are then applied to items, etc. There are currently two main types of inspections that are supported. 

With qualitative inspections, the inspector can verify that the item is in good overall condition or verify that the appropriate certificates are in place. Quantitative inspections, on the other hand, allow you to define multiple measurable elements along with criteria for acceptance, i.e. diameter, width, length, temperature, or even chemical composition.

Skip Lot, Sample Size and Failures 

Within each inspection, you can also specify how many items need to be inspected and define rules for inspecting specific sequences of lot or serial tracked items. Failures then define how many of the inspected units can fail inspection before the inspection itself is failed—kicking off the non-conformance workflow. 

As an administrator, you are able to distinguish sample data from summary or aggregate data and control whether sample data should be recorded in NetSuite or stored externally, allowing you to easily work with larger volumes of raw data sets. 

Test Definition 

Each inspection can be set up with multiple data elements that define the parameters of the inspection process.

Emerging Market Packages | Data Sheet

The Team at Caravel has spent the last two decades working with clients across North America ranging from SMB, Mid-Market to Enterprise.

Having worked with over 500 clients, Caravel
has consolidated this experience into a repeatable framework for helping companies define lean yet scalable business processes, efficiently implementing NetSuite, and providing project oversight to ultimately achieve business success.

Stay In Touch

Register for our newsletter and all other updates that the Caravel team has to share!