Email this post as a PDFDevelopment · 10 October 2026 · 3 min read

System fields: SystemId, SystemModifiedAt and the fields every table has for free

Every table in Business Central has eight fields you did not declare: SystemId, SystemCreatedAt, SystemCreatedBy, SystemModifiedAt, SystemModifiedBy, SystemRowVersion and the timestamp. They are what APIs, webhooks, delta reads, audit and Power BI incremental refresh run on. What each is, how to use them, and the two things people try to do with them that do not work.

Contents
  1. The fields
  2. Using them
  3. Writing them
  4. Record links and notes
  5. The two that do not work

Open any table in the symbol browser and below your fields are the system fields. They are maintained by the platform on every insert and modify, they are indexed, they are exposed by every API page, and they answer questions that extensions used to add fields for.

The fields

FieldTypeWhat it is
SystemIdGuidA unique, stable identifier for the record, assigned on insert, never changed, unique across the tenant. The id in every API.
SystemCreatedAt / SystemCreatedByDateTime / Guid (user SystemId)When and by whom the record was inserted.
SystemModifiedAt / SystemModifiedByDateTime / GuidWhen and by whom it was last modified (any field, including by code).
SystemRowVersionBigIntegerA tenant-wide monotonically increasing version stamp updated on every write (version 25 and later). The reliable change-tracking column.
timestampBigIntegerSQL's rowversion; older, per database, still used by the sync tooling.

Using them

  • Foreign keys from outside. An integration stores the Business Central SystemId, not the "No.", because numbers can be renamed and GUIDs cannot. Record.GetBySystemId(Id) fetches it.
  • Delta reads. SetFilter(SystemModifiedAt, '>%1', LastRun) gives "what changed since", for a nightly sync. Or SystemRowVersion > LastVersion, which is immune to clock issues and ordering problems and is what Microsoft's own Dataverse sync uses. Expose the field on your API page as lastModifiedDateTime as the standard APIs do.
  • Audit without the change log. Who created and last changed a record, free, on every record. Show them on a FactBox. For field-level history, the Change Log is still the tool.
  • Retention policies filter on SystemCreatedAt for tables with no business date (retention post).
  • Power BI incremental refresh on SystemModifiedAt, so the dataset pulls a day of changes rather than the table.
  • Email and record relations. Email.AddRelation, document attachments and the record link table key on SystemId.

Writing them

You do not. The platform sets them, and Insert with a pre-set SystemId is allowed only when inserting with Insert(true, true) (the second parameter: insert with SystemId), which is for migrations and replication that must preserve identity across environments. SystemCreatedAt and the rest are read-only.

The Record Link table (links and notes on any record, the Links/Notes FactBoxes) keys on RecordId, which is the table ID plus primary key, not SystemId. A rename of the primary key moves them (the platform handles it for the standard rename); a copy-company does not. If you need a durable link from your table to another, store the SystemId in a Guid field with a TableRelation-less lookup, or use the RecordId type with the knowledge that it tracks renames.

The two that do not work

  • Using SystemModifiedAt as "when did the business change this". Any modify sets it, including a batch job touching a flag. If finance needs "last price change", that is your own field set in the validate trigger.
  • Assuming SystemId is the same across environments. A sandbox copy keeps them; a fresh implementation or a migration does not. An integration that was pointed at the sandbox and then at production with stored SystemIds will find nothing.
Email this post as a PDF
A branded PDF of this post, sent to your inbox to keep, print or share. Copy in colleagues if you like.
We only use these addresses to send this PDF. Nobody is added to a mailing list. Mike at Business Boxed receives a copy. See our privacy notice.
Email this post
Talk to us
Want this done in your Business Central?
Book a 30 minute callGet the monthly newsletter

Related posts