felixdivall.com / NetSuite

Focus area

NetSuite

SuiteScripts,
written in TypeScript.

ERP work since 2022, across four companies in Sweden and Denmark – and a growing pile of tooling built to make the repetitive parts of SuiteScript development stop being repetitive.

Now building Mynt, a language for NetSuite

Where

Four companies, one platform

Consulting and development roles, from the first ERP implementation to leading the technical side of a delivery team.
The resume has what each one actually involved; this is the shape of it.

  • Systems DeveloperEmpathiq, Malmö Aug 2026 – now
  • Technical LeadOmnit, Copenhagen Apr 2025 – Aug 2026
  • Systems DeveloperStaria, Malmö Apr 2023 – Mar 2025
  • Systems DeveloperSuitespot, Malmö Jun 2022 – Apr 2023

Built

The Integration App

An integration platform that lives inside NetSuite rather than beside it. Another system posts to one endpoint, and every request is written down as a record before anything happens to it. Whether it is then picked up on the spot or left for a scheduled run is a setting rather than a rewrite – and either way a failed row is a row you can open, fix and retry rather than a lost message.

The point of it is that the next integration should not need a developer. Field mappings are configuration records edited in the NetSuite UI, so a new field is a mapping and not a deployment – and a small React dashboard sits on top for the mapping and the log.

Front door
One RESTlet: post work, get answers back.
Staging
Always written down. Run now or run later.
Mapping
Configuration, not code. No deploy for a field.
Order
Records that depend on records not created yet.

That last one is the part worth the trouble. A payload often refers to something that does not exist in NetSuite yet, so those rows carry a placeholder, travel together, and have their real identifiers written back once the thing they point at exists.

Written in TypeScript, and available to you through Empathiq.

Tooling

The SDF tool

SuiteCloud's own suitecloud project:create -i gives you a JavaScript project. nsx gives you one built for TypeScript: the layout, the project.json, the build config that compiles it to SuiteScript, and files named the way the rest of the account is named. None of that is the work, so with it done, the first thing you write is the script.

npm install -g netsuite-ts-sdf-tool

Mynt

So I started writing a language

Four years of customisations, integrations and tooling kept turning up the same detours. Eventually the question was no longer how to work around them, but whether they had to be there at all.

Mynt is the answer I am building: a small language for NetSuite that knows your records, refuses the platform's silent mistakes, and compiles to plain SuiteScript 2.1. It is not a side business. It is the same work as everything above, carried one level further down – and the clearest picture I can give of how I think about software.

Mynt · 3 lines
beforeSubmit create | edit (customer: Customer) {
    customer.comments = 'Managed by Mynt'
}
SuiteScript 2.1 · 25 lines
/**
 * @NApiVersion 2.1
 * @NScriptType UserEventScript
 * @NModuleScope SameAccount
 */
define([], () => {
    function beforeSubmit(context) {
        if (
            context.type !== context.UserEventType.CREATE &&
            context.type !== context.UserEventType.EDIT
        ) {
            return;
        }
  • Records are typesA misspelled field fails on your machine, not in production.
  • Mistakes fail earlyA change NetSuite would silently discard does not build.
  • Plain SuiteScript outNo runtime. Deploy the output like any other file.

Get in touch

NetSuite work, SuiteScript, or something the platform is making harder than it should be – I am happy to talk about any of it.