SuiteQL Metadata vs SuiteCloud XML for Custom Records
Choose SuiteQL Records Catalog metadata for analytical discovery and SuiteCloud SDF XML for deployment: different systems, names and guarantees for custom records and fields.
46 practical notes, written to be found again.
Choose SuiteQL Records Catalog metadata for analytical discovery and SuiteCloud SDF XML for deployment: different systems, names and guarantees for custom records and fields.
Build a SuiteScript export of custom-field definition metadata with SuiteQL: catalog-confirmed columns, pagination, CSV escaping and per-account query adaptation.
Diagnose a missing CustomRecordCustomField (or similar) SuiteQL record: role, channel, features, Show Unavailable Items and the difference between UI fields and analytics metadata.
Map NetSuite custom-field families to SuiteQL metadata records: custom-record fields versus transaction, entity, item and CRM definitions—always verified in the Records Catalog.
Discover which list or record a NetSuite List/Record custom field points to by reading field-definition metadata from the Records Catalog—not by guessing from the UI.
Join custom-record field definition metadata to custom-record type metadata in SuiteQL only after the Records Catalog documents the relationship—never from a guessed UI key.
A practical column checklist for SuiteQL against CustomRecordCustomField: which analytical fields to confirm in the Records Catalog and how to select them safely.
Safely update a NetSuite invoice without losing its applied journal credits by snapshotting applications and restoring missing amounts through a zero-dollar customer payment.
Understand Customer, CustomerAddressBook and CustomerAddressBookEntityAddress and join them correctly in SuiteQL.
Diagnose duplicate customer rows in SuiteQL address queries and choose the correct result grain instead of relying on DISTINCT.
Return a customer default billing address, default shipping address or both with SuiteQL while retaining customers without an address.
Diagnose SuiteQL dates that appear one day early or late by separating date-only values, timestamps and JavaScript time-zone conversion.
Query NetSuite accounting periods with SuiteQL and avoid confusing transaction dates, posting periods and fiscal calendars.
Group SuiteQL results by calendar month, quarter or year while keeping the output correctly sorted across multiple years.
Pass dates and timestamps safely to N/query SuiteQL using bind parameters, TO_DATE and TO_TIMESTAMP with explicit formats.
Filter SuiteQL records by the current month, previous month or a custom date range without losing rows at time boundaries.
Cancel a pending NetSuite Map/Reduce deployment, contain one that is already processing, assess partial work and add a cooperative stop switch.
Connect Python to NetSuite using OAuth 2.0, REST Web Services, SuiteQL and RESTlets, with pagination, retries, error handling and secure configuration.
Round numbers, currency, percentages and dates in NetSuite saved searches using ROUND, TRUNC, FLOOR and CEIL, with practical examples and common mistakes.
A practical reference for supported NetSuite saved-search functions, with copyable examples for text, numbers, dates, nulls, conditions and summary results.
Diagnose NetSuite UNEXPECTED_ERROR failures by isolating deployment, imports, permissions, field IDs, N/search, N/query, serialization and governance problems.
Write NetSuite saved-search CASE formulas with multiple WHEN branches, AND, OR, ELSE, null handling, numeric flags, summaries and DECODE alternatives.
Use NetSuite saved-search formulas in criteria, results and highlighting, with examples for text, numbers, dates, null values, summaries and common errors.
Use the NetSuite Records Catalog to find SuiteQL record, field and join IDs, understand role-specific availability and diagnose unknown identifier errors.
Understand the 5,000-row runSuiteQL limit, runSuiteQLPaged page sizes, deterministic ordering, governance and the 100,000-row paged-result ceiling.
Find CustomRecordCustomField metadata in the NetSuite Records Catalog and query custom-record field IDs, labels and relationships safely with SuiteQL.
Use EXTRACT(YEAR FROM date) and EXTRACT(MONTH FROM date) in SuiteQL to filter, group and compare NetSuite date fields, with alternatives using TO_CHAR.
Choose the correct SuiteScript sublist APIs for standard and dynamic record modes, with working examples, field-sourcing differences and a debugging checklist.
Keep optional SuiteQL filters and positional parameters synchronized, handle dates safely, and avoid malformed WHERE clauses and invalid bind types.
NetSuite FILE fields must remain in a Suitelet’s main area. Here is why native subtabs and upload controls conflict, plus practical layout alternatives.
Use ServerRequest.getLineCount and getSublistValue to process submitted Suitelet rows, with notes on validation, checkboxes and NetSuite’s raw sublist encoding.
A practical guide to composing N/search filter expressions, including nested OR conditions, NOT, joined fields, formula filters and NetSuite special values.
Sharing a NetSuite tab does not make Suitelet sublists appear one beneath another. The missing piece is a shared subtab. Here is the working serverWidget pattern and its layout caveats.
A blank SuiteQL parameter is not equal to an empty string. Learn why optional filters silently remove every row, how to reproduce the problem, and two reliable ways to fix it.
As I continue my journey into Neovim, I've discovered that one of the most powerful features is the ability to work with multiple panels or windows, as Vim calls them. Coming from …
I've only started a venture into Neovim. With AI producing a lot of the code I need to get started, and my recent testing with Claude Code, I'm finding I'm back in the terminal a l…
Diagnose the SCRIPT_OF_API_VERSION_2X_MUST_IMPLEMENT_A_SCRIPT_TYPE_INTERFACE error by checking script annotations, client-script paths and exported entry points.
If you're using Tim Diedrich's SuiteQL suitelet in your Netsuite instance to generate a table of results and want to present this result but don't like the column headers, or if yo…
Import a NetSuite custom record type into an SDF project with SuiteCloud CLI and understand how customrecordcustomfields appear in the generated XML definition.
Generate a number or date series in SuiteQL using DUAL, CONNECT BY or portable digit sets for working-day calculations and missing-period reports.
A practical SuiteQL starting template for named columns, bind parameters, optional filters, deterministic ordering and N/query execution.
Join Customer, CustomerAddressBook and CustomerAddressBookEntityAddress to retrieve billing, shipping and street-address details with SuiteQL.
LISTAGG is currently listed as unsupported in SuiteQL. Diagnose the generic error and replace string aggregation with grouped rows or JavaScript processing.
How do you reference images that are stored in your Filing Cabinet when trying to embed them into HTML. For example, when using logos in your emails how do you reference them? When…
When creating an XML object definition for your Suitescript deployment I noticed the schedule for the deployment was different to what I had coded. Here's a snippet of the XML obje…
A SuiteQL budget query fell from almost nine minutes to five seconds by filtering the required category in a CTE before joining the larger result set.