<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://makertipoftheday.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://makertipoftheday.com/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-10-09T15:53:58+11:00</updated><id>https://makertipoftheday.com/feed.xml</id><title type="html">Maker Tip Of The Day | Tips</title><subtitle>Short, verified tips for the Microsoft business-application stack. Every tip ships a runnable artifact, the environment it was tested in, and an expiry date. The surfaces covered are listed in the README and in about.</subtitle><entry><title type="html">Your table has twelve columns you did not create, and one of them rewrites Created On</title><link href="https://makertipoftheday.com/tip/14-twelve-columns-you-did-not-create/" rel="alternate" type="text/html" title="Your table has twelve columns you did not create, and one of them rewrites Created On" /><published>2026-10-09T00:00:00+11:00</published><updated>2026-10-09T00:00:00+11:00</updated><id>https://makertipoftheday.com/tip/14-twelve-columns-you-did-not-create</id><content type="html" xml:base="https://makertipoftheday.com/tip/14-twelve-columns-you-did-not-create/"><![CDATA[<p><strong>Tip</strong></p>

<p>Count them once on your own table and you stop re-creating them. Every Dataverse table carries a
fixed set of columns the maker never authored, and the count is not a guess: in Microsoft’s own CoE
Starter Kit release, 46 tables carry <strong>1,586 columns between them, 812 of which nobody created</strong>, and
the same <strong>twelve</strong> appear on all 46 -</p>

<p><code class="language-plaintext highlighter-rouge">createdby</code>, <code class="language-plaintext highlighter-rouge">createdon</code>, <code class="language-plaintext highlighter-rouge">createdonbehalfby</code>, <code class="language-plaintext highlighter-rouge">modifiedby</code>, <code class="language-plaintext highlighter-rouge">modifiedon</code>, <code class="language-plaintext highlighter-rouge">modifiedonbehalfby</code>,
<code class="language-plaintext highlighter-rouge">importsequencenumber</code>, <code class="language-plaintext highlighter-rouge">overriddencreatedon</code>, <code class="language-plaintext highlighter-rouge">statecode</code>, <code class="language-plaintext highlighter-rouge">statuscode</code>, <code class="language-plaintext highlighter-rouge">timezoneruleversionnumber</code>,
<code class="language-plaintext highlighter-rouge">utcconversiontimezonecode</code></p>

<p>Tables that use owners or business process flows add more (<code class="language-plaintext highlighter-rouge">ownerid</code>, <code class="language-plaintext highlighter-rouge">owninguser</code>, <code class="language-plaintext highlighter-rouge">owningteam</code>,
<code class="language-plaintext highlighter-rouge">owningbusinessunit</code>, <code class="language-plaintext highlighter-rouge">processid</code>, <code class="language-plaintext highlighter-rouge">stageid</code>, <code class="language-plaintext highlighter-rouge">traversedpath</code>) - <code class="language-plaintext highlighter-rouge">admin_App</code> carries 20 in total.</p>

<p><strong>The one that surprises people is <code class="language-plaintext highlighter-rouge">overriddencreatedon</code></strong>, because the mapping is the reverse of
what the name suggests:</p>

<blockquote>
  <p>To import data in the createdon column, map the source column that contains this data to the
overriddencreatedon column. During import, the record’s createdon column is updated with the value
that was mapped to the overriddencreatedon column and the overriddencreatedon column is set to the
date and time that the data was imported.</p>
</blockquote>

<p>So after a migration, <code class="language-plaintext highlighter-rouge">createdon</code> holds the original date (the one you mapped) and
<code class="language-plaintext highlighter-rouge">overriddencreatedon</code> holds the day you ran the import - not the other way round. Any report that reads
<code class="language-plaintext highlighter-rouge">overriddencreatedon</code> as “when the record was really created” is reading the migration date. Map
nothing and <code class="language-plaintext highlighter-rouge">createdon</code> becomes the import date and <code class="language-plaintext highlighter-rouge">overriddencreatedon</code> stays empty.</p>

<p><strong>And <code class="language-plaintext highlighter-rouge">importsequencenumber</code> is how you audit one import.</strong> Each import job stores a unique sequence
number in that column on every record it creates, so one number identifies exactly the rows a given
import produced - which is the question you actually have when something goes wrong halfway.</p>

<p><strong>Try it</strong></p>

<p>Run the artifact against a solution you ship and get your own numbers in the first three lines.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Tip]]></summary></entry></feed>