Marty Zigman

Conversations with Marty Zigman

Certified Administrator • ERP • SuiteCloud

A NetSuite Platform Pattern for Gaining Control While Reducing Integration Technical Debt

ERP NetSuite Strategy Technical



This article is relevant if your NetSuite account receives orders from multiple external channels and you want to reduce provider dependency, control technical debt, and take greater advantage of the NetSuite platform you already own.

TL;DR Summary

In Part 1 of this two-part series, I discussed how individually reasonable integration decisions can accumulate until the native NetSuite model increasingly reflects provider architecture instead of business architecture.Blog header: A NetSuite Platform Pattern for Gaining Control While Reducing Integration Technical Debt, Part 2 of 2, by Marty Zigman, President and Founder of Prolecto Resources

The alternative begins with a simple principle:

Let integration providers offer services and data. Let NetSuite own the business model.

Instead of asking every external integration to directly create and shape native NetSuite transactions, we can first receive the external information into controlled NetSuite integration objects. NetSuite can then apply business rules, manage processing, and determine how information should be converted into native entities and transactions.  Respectfully, this approach is not common sense and requires deliberate planning.

The result is a cleaner architectural boundary with greater control over processing, scalability, retry behavior, and the long-term shape of the NetSuite account.

Background

Order integration is one of the most common scenarios we encounter. A client may receive orders from eCommerce, B2B EDI, marketplaces, and other channels, often through different integration providers.

The familiar pattern is straightforward:

External System → Integration Tool → Native NetSuite Transaction

This works, but it also places significant responsibility on the integration provider for the native NetSuite data model. Over time, multiple providers may each introduce their own fields, mappings, scripts, and processing assumptions.

I explored the resulting technical debt in Part 1 of this series.  I recommend reading it first to better understand its implications.  I have also previously contrasted point-to-point integration thinking with a broader NetSuite platform approach.

The opportunity is to move the integration boundary.

A Planned Scalable Architecture Leveraging the NetSuite Platform

The following pattern is not absolute.  It is better to consider it a thoughtful, deliberate alternative method for scaling NetSuite while maintaining control and cost.

Using NetSuite to Separate Transport from Business Processing

A useful design distinction is to separate two responsibilities:

  1. Data Distribution: Transport the information between systems.
  2. Data Processing: Interpret that information according to the business model.

Many integrations combine these responsibilities. An order arrives; the integration maps it immediately to native NetSuite fields, and the external platform participates directly in creating the business transaction.

We increasingly prefer a different pattern:

External Systems → Integration Plumbing → NetSuite Integration Object → NetSuite Processing → Native Business Model

The integration provider still performs an important job. It reliably moves information.

But instead of requiring the provider to understand and directly shape every native NetSuite structure, we receive the source information in a controlled integration object, typically a NetSuite custom record that contains the source payload.  Once the information is inside NetSuite, we decide what it means. That distinction gives the NetSuite owner architectural control.

A Controlled NetSuite Integration Object

The inbound integration object creates a useful boundary between external communications and internal business processing.

  1. Receive and preserve the source payload: We either pull data or have the external tool transport the information into NetSuite, often in structured JSON format. We preserve that information before attempting to convert it into the final business transaction.  We often think of it as “swallowing” data.
  2. Persist the integration state: A NetSuite custom record becomes a durable representation of what was received. External communication no longer needs to remain open throughout downstream business processing.
  3. Apply business rules inside NetSuite: NetSuite processing logic interprets the payload and determines which Customers, Sales Orders, lines, or related structures should be created or updated.  We are in control.
  4. Record processing outcomes:  Status, exceptions, and retry information can be managed on the integration structure rather than forcing every technical processing concern onto the native transaction.

This approach changes an important assumption: the unit of communication need not equal the unit of business processing.

Moving from Chatty Transactions to Controlled Batches

Consider an integration that receives 100 orders.  A transaction-by-transaction design may produce 100 separate system conversations, each attempting to create an individual NetSuite transaction. Instead, we can receive those 100 orders as a controlled batch, persist the batch, and let NetSuite process the individual business outcomes.  That produces three useful characteristics.

  1. Persistent Payload: The source information remains available after the external communication has completed. We can inspect what we swallowed (was originally received) without requiring the source system to pull or transmit the information again.
  2. Controlled Processing: NetSuite can determine when and how aggressively to process the work. The batch size can be adjusted based on transaction volume, timing, governance, and processing capacity.  Note that this ability to shape the data for the number of transactions in the batch and contents is one of the ways to better ways to build more scalable transaction processing,
  3. Retryable Execution: A business-processing problem does not necessarily become a communication problem. If an order cannot be created because a business condition is not met, we can preserve the original information, correct the condition, and retry processing.  We can build a mechanism to inspect and resolve those problem records independent of the data communication.

This is why I think the most useful description of the pattern is: Decouple system communication from business transaction processing.

Leveraging NetSuite SuiteCloud Processing

Once the information is persisted in NetSuite, the platform’s background processing can handle the work.  Map/Reduce is often a natural mechanism because it allows us to distribute processing through SuiteCloud processors. I discussed this philosophy in more depth here in my recent article, How to Build Scalable NetSuite Batch Processing Without More Middleware.

Map/Reduce is a NetSuite construct where NetSuite provides substantial processing capacity yet is frequently underutilized.  Indeed, to leverage it requires careful architectural processing patterns.  One simply can’t activate it.  It requires fitting.  And we should optimize the number of SuiteCloud+ licenses required.  We leverage this pattern in the tools we give our clients without a license charge:  Consider that our Prolecto Record Import/Export Manager, or RIEM can help establish this transport pattern.  I introduced related automation concepts in my 2020 article, Fully Automate Complex NetSuite Data Imports.

These tools help us treat the integration platform as plumbing while preserving NetSuite as the place where business interpretation occurs.

Click images to see them full size.

Keeping Extended Attributes Out of the Native Core

The same architectural thinking applies after the transaction is created.  Not every useful piece of information needs to become another native transaction field.   In my recent article on effective dating patterns, I discussed using related custom records to extend native NetSuite objects.  A related extension record can carry additional attributes while the native record retains only what properly belongs to the business object. Where useful, a carefully selected pointer field can preserve native Saved Search joining capabilities.

The principle is not that custom records are inherently better than custom fields.  The principle is to model the information according to its actual relationship to the business object.  That is how we avoid replacing one form of technical debt with another.

Building NetSuite Integration Architecture with Control

The important change in this integration pattern is not a particular script, custom record, or tool.  It is the assignment of responsibility.

  1. Get Data: We either pull the data, or the integration provider moves it.
  2. Hold Data: The integration object preserves the information.
  3. Process Data: NetSuite processing interprets the information.
  4. Fit Data: The business model determines the final outcome.

That separation gives clients greater control over their architecture and reduces the likelihood that every new sales channel or provider will independently reshape the native NetSuite model.

It also reflects how we approach NetSuite craftsmanship. We want to understand the client’s business, model the relationships carefully, and then use the platform’s capabilities deliberately.

Our Prolecto Labs initiatives support this philosophy.  We make reusable intellectual property, algorithms, and accelerator tools available to our clients without separate software license charges. Our goal is to help clients build adaptable systems they can control rather than introduce another unnecessary dependency.

This kind of work also reflects the professionals we seek to attract to our team. Good NetSuite architecture requires listening, database modeling, judgment, creativity, and disciplined execution. The technical tools matter, but the craft is knowing how to use them to produce a coherent system.

If you found this article relevant, feel free to sign up for notifications to new articles as I post them. If you are ready to gain greater control over your NetSuite integration architecture, let’s have a conversation.

 

 

Marty Zigman LinkedIn

Marty Zigman

Holding three official certifications, Marty is widely recognized as a top NetSuite expert and leads a team of senior professionals at Prolecto Resources, Inc. A former Deloitte & Touche CPA and technology executive with CTO roles, he brings over 35 years of leadership in ERP, CRM, and eCommerce business systems. Contact Marty to engage directly.

BiographyYouTubeLinkedInX (Twitter)

Leave a Reply

Your email address will not be published. Required fields are marked *