<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Dynamics AX GFM Team Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/feed.xml</link>
    <description>Brought to you by Microsoft teams working on the Global Financial Management (GFM) frameworks and applications for Microsoft Dynamics AX 2012 and beyond</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:17:35 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Dimension defaulting - Part 7 (Advanced topics)</title>
      <link>https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/dimension-defaulting-part-7-advanced-topics</link>
      <pubDate>Fri, 12 Sep 2014 11:17:00 GMT</pubDate>
      <dc:creator><![CDATA[Bill Frandsen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ax_gfm_framework_team_blog/2014/09/12/dimension-defaulting-part-7-advanced-topics/</guid>
      <description><![CDATA[Introduction
Concluding this series of blog posts, this section covers additional defaulting...]]></description>
      <content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>Concluding this series of blog posts, this section covers additional defaulting patterns and APIs that can be used in advanced scenarios.</p>
<p>This blog post series includes:</p>
<ul>
<li><a title="Financial dimensions discovery" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-1-financial-dimensions-discovery.aspx">Financial dimensions discovery</a></li>
<li><a title="Control uptake and storage" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-2-control-uptake-and-storage.aspx">Control uptake and storage</a></li>
<li><a title="Copy patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-3-copy-patterns.aspx">Copy patterns</a></li>
<li><a title="Merging patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-4-merging-patterns.aspx">Merging patterns</a></li>
<li><a title="Ledger dimension creation" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-5-ledger-dimension-creation.aspx">Ledger dimension creation</a></li>
<li><a title="Common pattern APIs" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-6-common-pattern-apis.aspx">Common pattern APIs</a></li>
<li>Advanced topics&nbsp;(this post)</li>
</ul>
<p><strong>DimensionDefaultingEngine</strong></p>
<p>In the <a title="previous blog post" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-6-common-pattern-apis.aspx">previous blog post</a>, the <em>DimensionDefaultingService</em> class was described. It provides the common APIs needed for most defaulting needs. For scenarios not supported by the <em>DimensionDefaultingService</em>, the <em>DimensionDefaultingEngine</em> class can be used directly. This class provides all of the logic for the <em>DimensionDefaultingService</em> class.</p>
<p>The engine leverages a concept called dimension specifiers which is a map of dimensions and values obtained from default dimensions and ledger dimensions. The documentation for the <em>DimensionDefaultingEngine </em>can be found on <a href="https://msdn.microsoft.com/en-us/library/dimensiondefaultingengine.aspx">MSDN</a>.</p>
<p><strong>Defaulting during segment entry</strong></p>
<p>In most cases, the merging of default dimensions to a ledger dimension occurs before the user has begun editing the ledger account combination in a segmented entry control. In some circumstances, the form has logic to perform defaulting as the user enters each segment in the control. In order to do this, the form must respond to events raised by the segmented entry control.</p>
<p>To perform defaulting at entry leveraging the <em>DimensionDefaultingEngine</em> class, the <em>segmentValueChanged()</em> method on the segmented entry control is overridden.&nbsp;Defaulting can then be based on current values in the control providing values for other segments.&nbsp; This example in Figure 1 adds dimension values from the MainAccount table, merging with other values, as soon as a MainAccount is entered in the segmented entry control.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4555.c71.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4555.c71.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4555.c71.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4555.c71.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 1: Sample segmentValueChanged() override to default during segment entry</strong></p>
<p>This concludes this series of blog posts about dimension defaulting.<strong></strong></p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Dimension defaulting - Part 6 (Common pattern APIs)</title>
      <link>https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/dimension-defaulting-part-6-common-pattern-apis</link>
      <pubDate>Fri, 12 Sep 2014 11:15:00 GMT</pubDate>
      <dc:creator><![CDATA[Bill Frandsen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ax_gfm_framework_team_blog/2014/09/12/dimension-defaulting-part-6-common-pattern-apis/</guid>
      <description><![CDATA[Introduction
Continuing this series of blog posts, this post describes APIs used for most common...]]></description>
      <content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>Continuing this series of blog posts, this post describes APIs used for most common defaulting patterns.</p>
<p>This blog post series includes:</p>
<ul>
<li><a title="Financial dimensions discovery" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-1-financial-dimensions-discovery.aspx">Financial dimensions discovery</a></li>
<li><a title="Control uptake and storage" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-2-control-uptake-and-storage.aspx">Control uptake and storage</a></li>
<li><a title="Copy patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-3-copy-patterns.aspx">Copy patterns</a></li>
<li><a title="Merging patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-4-merging-patterns.aspx">Merging patterns</a></li>
<li><a title="Ledger dimension creation" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-5-ledger-dimension-creation.aspx">Ledger dimension creation</a></li>
<li>Common pattern APIs&nbsp;(this post)</li>
<li><a title="Advanced topics" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-7-advanced-topics.aspx">Advanced topics</a></li>
</ul>
<p><strong>DimensionDefaultingService APIs</strong></p>
<p>The dimension defaulting service provides the APIs needed for defaulting scenarios. The methods are highly optimized for performance.</p>
<p><strong>Default dimensions</strong></p>
<p>The <em>serviceMergeDefaultDimensions()</em> API is the most commonly used API for default dimensions. It should be called whenever a new default dimension needs to be created from 2 to 4 other default dimensions. If more default dimensions need to be merged than 4, it can be called multiple times with the result of the prior call used as the first parameter to the subsequent call.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4087.c61.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4087.c61.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4087.c61.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4087.c61.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 1: DimensionDefaultingService.serviceMergeDefaultDimensions()</strong></p>
<p>The <em>serviceReplaceAttributeValue()</em> API is useful in the case that a single dimension value needs to be copied from one default to another default set. The value specified will replace whatever value already exists in the source set.</p>
<p align="center"><strong></strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5040.c62.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5040.c62.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5040.c62.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5040.c62.png" alt="" border="0" /></a>&nbsp;</p>
<p align="center"><strong>Figure 2: DimensionDefaultingService.serviceReplaceAttributeValue()</strong>&nbsp;</p>
<p><strong>Ledger dimensions</strong></p>
<p>The <em>serviceCreateLedgerDimension()</em> API is the most commonly used API for ledger dimensions. It should be called whenever a new ledger account combination needs to be created from a default account or existing ledger account combination and 0 to 3 default dimensions. If more default dimensions need to be merged than 3, it can be called multiple times with different sources taking the result of the prior call as the first parameter to the subsequent call. The MainAccount dimension is only retrieved from the supplied ledger dimension.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6862.c63.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6862.c63.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6862.c63.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6862.c63.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 3: DimensionDefaultingService.serviceCreateLedgerDimension()</strong></p>
<p>The <em>serviceCreateLedgerDimensionForType()</em> API is similar to the previous API but rather than creating a ledger account combination, it can create other ledger dimension types such as budget accounts or budget planning accounts specified by the LedgerDimensionType parameter.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/7367.c64.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/7367.c64.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/7367.c64.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/7367.c64.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 4: DimensionDefaultingService. serviceCreateLedgerDimensionForType()</strong></p>
<p>The <em>serviceCreateLedgerDimForDefaultDim()</em> API is similar to the previous APIs, but the values from the default dimension are copied directly to the new ledger dimension, while the dimension values from the ledger dimension are merged afterwards. In the previous APIs, the ledger dimension values were copied, and the default dimension values were merged.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5710.c65.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5710.c65.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5710.c65.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5710.c65.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 5: DimensionDefaultingService.serviceCreateLedgerDimForDefaultDim()</strong></p>
<p>The <em>serviceLedgerDimensionFromLedgerDims()</em> API is similar to the previous APIs but uses only ledger dimensions as sources to construct a new ledger dimension. The main account will only be retrieved from the first ledger dimension.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5545.c66.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5545.c66.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5545.c66.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5545.c66.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 6: DimensionDefaultingService.serviceLedgerDimensionFromLedgerDims()</strong></p>
<p>The <em>serviceMergeLedgerDimensions()</em> API is similar to the previous API but is optimized to combine just 2 ledger dimensions.&nbsp;</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6683.c67.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6683.c67.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6683.c67.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6683.c67.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 7: DimensionDefaultingService.serviceMergeLedgerDimensions()</strong></p>
<p>The <em>serviceCreateLedgerDimFromLedgerDim()</em> API is useful when copying ledger dimensions from a historic posted document onto a new unposted document to ensure that it uses the current account structure configuration.&nbsp; This will avoid validation errors when validating the new ledger dimensions during posting.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0044.c68.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0044.c68.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0044.c68.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0044.c68.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 8: DimensionDefaultingService.serviceCreateLedgerDimFromLedgerDim()</strong></p>
<p>In the <a title="next blog post" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-7-advanced-topics.aspx">next blog post</a>, additional defaulting patterns and APIs that can be used in advanced scenarios will be described.</p>]]></content:encoded>
    </item>
    <item>
      <title>Dimension defaulting - Part 5 (Ledger dimension creation)</title>
      <link>https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/dimension-defaulting-part-5-ledger-dimension-creation</link>
      <pubDate>Fri, 12 Sep 2014 11:14:00 GMT</pubDate>
      <dc:creator><![CDATA[Bill Frandsen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ax_gfm_framework_team_blog/2014/09/12/dimension-defaulting-part-5-ledger-dimension-creation/</guid>
      <description><![CDATA[Introduction
Continuing this series of blog posts, this post covers how default dimensions can be...]]></description>
      <content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>Continuing this series of blog posts, this post covers how default dimensions can be merged to create new ledger dimensions.</p>
<p>This blog post series includes:</p>
<ul>
<li><a title="Financial dimensions discovery" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-1-financial-dimensions-discovery.aspx">Financial dimensions discovery</a></li>
<li><a title="Control uptake and storage" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-2-control-uptake-and-storage.aspx">Control uptake and storage</a></li>
<li><a title="Copy patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-3-copy-patterns.aspx">Copy patterns</a></li>
<li><a title="Merging patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-4-merging-patterns.aspx">Merging patterns</a></li>
<li>Ledger dimension creation&nbsp;(this post)</li>
<li><a title="Common pattern APIs" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-6-common-pattern-apis.aspx">Common pattern APIs</a></li>
<li><a title="Advanced topics" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-7-advanced-topics.aspx">Advanced topics</a></li>
</ul>
<p><strong>Ledger dimension creation</strong></p>
<p>Default dimensions exist as a way to provide values that later will be used to create ledger account combinations used in journals and accounting distributions. Default dimensions provide the dimensions other than MainAccount needed for a ledger account combination, and can be combined with a default account, or another ledger dimension in order to produce one.&nbsp; As defined in the <a href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2013/02/15/ledger-account-combinations-part-5-_2800_ledger-dimensions_2900_-.aspx">Ledger account combinations series of blog posts</a>, a ledger account combination is just a set of MainAccount and dimension values with structure and order applied.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6765.51a.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6765.51a.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6765.51a.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6765.51a.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6036.51b.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6036.51b.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6036.51b.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6036.51b.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 1: Accounting distributions from the purchase order line</strong></p>
<p>As shown in Figure 1 above, choosing the Financials-&gt;Distribute amounts option from the purchase order line the accounting distributions form opens. It already has a ledger account combination defaulted &ldquo;604250-00000001--Chicago-00000004&rdquo;. From the <a title="previous blog post" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-4-merging-patterns.aspx">previous blog post</a>, the values for the Project, BusinessUnit and Department dimensions have been populated and a MainAccount defaulted from the posting item group on the item, as the Purchase expenditure for expense account for a purchase order as shown in Figure 2 below.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4721.52a.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4721.52a.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4721.52a.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/338x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4721.52a.png" alt="" border="0" /></a></strong></p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5618.52b.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5618.52b.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5618.52b.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/338x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5618.52b.png" alt="" border="0" /></a></p>
<p align="center"><strong>Figure 2: Source of a default (main) account for the item on the purchase order line</strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1778.c53.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1778.c53.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1778.c53.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1778.c53.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1185.53.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1185.53.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1185.53.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1185.53.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 3: SQL query and results showing default account source</strong></p>
<p>The code required to merge the default dimension on the purchase order line with the default account from the item group is shown in Figure 4 below.&nbsp;</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1205.c54.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1205.c54.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1205.c54.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1205.c54.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 4: Code used to merge the default dimension with a default account</strong></p>
<p>Similar to merging default dimensions, once merged, a newledger account combination is created as shown in the query in Figure 5 below:</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4606.c55.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4606.c55.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4606.c55.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4606.c55.png" alt="" border="0" /></a></p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4456.55.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4456.55.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4456.55.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4456.55.png" alt="" border="0" /></a></p>
<p align="center"><strong>Figure 5: SQL query and results showing merged default account and default dimension</strong></p>
<p>In the <a title="next blog post" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-6-common-pattern-apis.aspx">next blog post</a>, APIs used for most common defaulting pattern APIs will be described.</p>]]></content:encoded>
    </item>
    <item>
      <title>Dimension defaulting - Part 4 (Merging patterns)</title>
      <link>https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/dimension-defaulting-part-4-merging-patterns</link>
      <pubDate>Fri, 12 Sep 2014 11:13:00 GMT</pubDate>
      <dc:creator><![CDATA[Bill Frandsen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ax_gfm_framework_team_blog/2014/09/12/dimension-defaulting-part-4-merging-patterns/</guid>
      <description><![CDATA[Introduction
Continuing this series of blog posts, this post covers how default dimensions are...]]></description>
      <content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>Continuing this series of blog posts, this post covers how default dimensions are merged between entities.</p>
<p>This blog post series includes:</p>
<ul>
<li><a title="Financial dimensions discovery" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-1-financial-dimensions-discovery.aspx">Financial dimensions discovery</a></li>
<li><a title="Control uptake and storage" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-2-control-uptake-and-storage.aspx">Control uptake and storage</a></li>
<li><a title="Copy patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-3-copy-patterns.aspx">Copy patterns</a></li>
<li>Merging patterns&nbsp;(this post)</li>
<li><a title="Ledger dimension creation" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-5-ledger-dimension-creation.aspx">Ledger dimension creation</a></li>
<li><a title="Common pattern APIs" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-6-common-pattern-apis.aspx">Common pattern APIs</a></li>
<li><a title="Advanced topics" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-7-advanced-topics.aspx">Advanced topics</a></li>
</ul>
<p><strong>Default dimension merging</strong></p>
<p>Figure 1 below shows the user manually cleared the Department dimension on the line, which in turn creates a new default dimension foreign key and updates the purchase order line.&nbsp; Since the line has not yet been saved this updated foreign key is only visible on the table buffer in memory, but the new default dimension can be queried and found as shown in Figure 2 below.&nbsp;</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3515.41.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3515.41.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3515.41.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/338x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3515.41.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 1: Default dimension modified on a document line (Purchase order line)</strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1856.c42.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1856.c42.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1856.c42.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1856.c42.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0624.42.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0624.42.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0624.42.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0624.42.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 2: SQL query and output showing updated default dimensions</strong></p>
<p>Next, consider the item that the user will enter on the purchase order line.&nbsp; Figures 3 and 4 below show default financial dimensions on the released product and the SQL query and result for that default dimension in the database.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/7801.43.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/7801.43.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/7801.43.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/338x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/7801.43.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 3: Default dimensions on an item</strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/7737.c44.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/7737.c44.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/7737.c44.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/7737.c44.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5773.44.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5773.44.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5773.44.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5773.44.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 4: SQL query and output showing default dimensions on item record</strong></p>
<p>Next, the user enters the item on the purchase order line.&nbsp; Figures 5 below shows the item selected on the purchase order line and the resulting default dimensions. In this case, the default dimension values were merged by the purchase order logic.</p>
<p style="text-align: center;"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6837.45.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6837.45.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6837.45.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/338x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6837.45.png" alt="" border="0" /></a></strong></p>
<p style="text-align: center;"><strong>Figure 5: Resulting default dimensions on a purchase order line</strong></p>
<p style="text-align: center;"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5554.c46.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5554.c46.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5554.c46.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5554.c46.png" alt="" border="0" /></a></strong></p>
<p style="text-align: center;"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0714.46.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0714.46.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0714.46.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0714.46.png" alt="" border="0" /></a></strong></p>
<p style="text-align: center;"><strong>Figure 6: SQL query and output showing default dimensions on item record</strong></p>
<p>The purchase order logic merges the default dimensions from 3 different sources when the item is specified for a purchase order line as shown in Figure 7 below.</p>
<p style="text-align: center;">Order header default dimensions merged with the order line default dimensions = merged result 1 default dimensions</p>
<p style="text-align: center;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1563.c47a.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1563.c47a.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1563.c47a.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1563.c47a.png" alt="" border="0" /></a></p>
<p style="text-align: center;">Item default dimensions merged with merged result 1 = final order line default dimensions (merged result 2)</p>
<p style="text-align: center;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0763.c47b.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0763.c47b.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0763.c47b.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0763.c47b.png" alt="" border="0" /></a></p>
<p style="text-align: center;"><strong>Figure 7: Merging steps taken</strong></p>
<p>The tables in Figure 7 show the logical steps of &nbsp;the merging that is occurring. &nbsp;However, these steps are combined during execution using the APIs provided by the dimensions framework. Figure 8 below shows the code needed to do all of the merging of the dimensions from the 3 sources shown above.</p>
<p style="text-align: center;"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4527.c48.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4527.c48.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4527.c48.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4527.c48.png" alt="" border="0" /></a></strong></p>
<p style="text-align: center;"><strong>Figure 8: Code used to merge the three sets of default dimensions</strong></p>
<p>In the <a title="next blog post" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-5-ledger-dimension-creation.aspx">next blog post</a>, examples of merging for the purpose of creating new ledger dimensions will be explained.</p>]]></content:encoded>
    </item>
    <item>
      <title>Dimension defaulting - Part 3 (Copy patterns)</title>
      <link>https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/dimension-defaulting-part-3-copy-patterns</link>
      <pubDate>Fri, 12 Sep 2014 11:12:00 GMT</pubDate>
      <dc:creator><![CDATA[Bill Frandsen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ax_gfm_framework_team_blog/2014/09/12/dimension-defaulting-part-3-copy-patterns/</guid>
      <description><![CDATA[Introduction
Continuing this series of blog posts, this section covershow default dimensions are...]]></description>
      <content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>Continuing this series of blog posts, this section covers<br />how default dimensions are copied between entities.</p>
<p>This blog post series includes:</p>
<ul>
<li><a title="Financial dimensions discovery" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-1-financial-dimensions-discovery.aspx">Financial dimensions discovery</a></li>
<li><a title="Control uptake and storage" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-2-control-uptake-and-storage.aspx">Control uptake and storage</a></li>
<li>Copy patterns&nbsp;(this post)</li>
<li><a title="Merging patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-4-merging-patterns.aspx">Merging patterns</a></li>
<li><a title="Ledger dimension creation" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-5-ledger-dimension-creation.aspx">Ledger dimension creation</a></li>
<li><a title="Common pattern APIs" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-6-common-pattern-apis.aspx">Common pattern APIs</a></li>
<li><a title="Advanced topics" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-7-advanced-topics.aspx">Advanced topics</a></li>
</ul>
<p><strong>Copy versus merge</strong></p>
<p>As initially described in the <a href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2013/12/16/dimension-defaulting-in-accounting-distributions-blog-1-introduction.aspx">Dimension defaulting in accounting distributions series of blog posts</a>, default dimensions are typically copied or merged with other dimension combinations to create ledger account dimensions. The dimension framework does not set the precedence for defaulting.&nbsp; Each form or process determines this based on their business logic needs.</p>
<p>A hypothetical order document will serve as the basis for the examples below. This could be a service order interacting with customers and containing line item services, or a purchase order interacting with vendors and line item inventory items. In terms of where default dimensions are entered, they could be entered or overridden at different points in processing as shown in Figure 1 below.</p>
<p align="center"><br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/8037.c31.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/8037.c31.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/8037.c31.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/338x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/8037.c31.png" alt="" border="0" /></a></p>
<p align="center"><strong>Figure 1: Default dimension sources on a typical document</strong></p>
<p>In the example of an order document, there are multiple default dimensions that are available for the business logic to consider. The document header may have a set of default dimensions like the purchase order in this example.&nbsp; The customer or vendor of the order, such as the vendor in this case, has a set of default dimensions as well.&nbsp; Depending on the business logic of the order, these different sets of default dimensions may have different precedence when combined together.&nbsp; Some may have higher precedence and replace other default dimensions while others may be merged together.</p>
<p><strong>Default dimension copy</strong></p>
<p>Figure 2 below shows a default dimension entered on a specific vendor account. Figure 3 below shows the SQL query for the default dimension reference on the vendor record and the resulting default dimension created.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/2541.32.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/2541.32.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/2541.32.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/338x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/2541.32.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 2: Default dimensions entered on a vendor account</strong>&nbsp;</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/8015.c33.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/8015.c33.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/8015.c33.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/8015.c33.png" alt="" border="0" /></a></p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1323.33.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1323.33.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1323.33.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1323.33.png" alt="" border="0" /></a></p>
<p align="center"><strong>Figure 3: SQL query and output showing default dimensions on vendor record</strong></p>
<p>Figures 4 and 5 below shows a new purchase order created for this vendor and the SQL query and default dimension reference on the header record. In this case the dimensions from the vendor replaced any dimensions already on the purchase order header as soon as a vendor is selected, so a direct copy of the default dimension foreign key was all that needed to be done as shown in Figure 6.</p>
<p align="center"><br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4338.34.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4338.34.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4338.34.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/338x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4338.34.png" alt="" border="0" /></a></p>
<p align="center"><strong>Figure 4: Default dimension copied to a document header (Purchase order)</strong>&nbsp;</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6470.c35.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6470.c35.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6470.c35.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6470.c35.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6305.35.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6305.35.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6305.35.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6305.35.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 5: SQL query and output showing default dimensions on purchase order record</strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1602.c36.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1602.c36.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1602.c36.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1602.c36.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 6: Code used to copy default dimensions from the vendor to the purchase order</strong></p>
<p>Next, suppose the user enters a value for the Project dimension.&nbsp; Figure 7 below, shows the header dimensions after that change.&nbsp;Figure 8 shows the SQL query for the default dimension reference on the header record and the resulting default dimension created.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3527.36.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3527.36.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3527.36.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/338x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3527.36.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 7: Default dimension modified by a user on a document header (Purchase order)</strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3162.c38.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3162.c38.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3162.c38.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3162.c38.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/7356.38.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/7356.38.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/7356.38.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/7356.38.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 8: SQL query and output showing updated default dimensions on purchase order record</strong></p>
<p>Next, as the user changes to the Line view to enter the lines, Figures 9 and 10 below show default dimensions copied from the purchase order header and the code copying the foreign key reference to the line. In this case, the line has not yet been saved so the default dimension foreign key only appears in the table buffer in memory.&nbsp;</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5125.39.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5125.39.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5125.39.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/338x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5125.39.png" alt="" border="0" /></a></p>
<p align="center"><strong>Figure 9: Default dimension copied to a document line (Purchase order line)</strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3362.c310.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3362.c310.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3362.c310.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3362.c310.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 10: Code used to copy default dimensions from the header to the line</strong></p>
<p>This example will be continued in the <a title="next blog post" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-4-merging-patterns.aspx">next blog post</a> where a line with an item is added to this purchase order, where dimensions will be merged instead of copied.</p>]]></content:encoded>
    </item>
    <item>
      <title>Dimension defaulting - Part 2 (Control uptake and storage)</title>
      <link>https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/dimension-defaulting-part-2-control-uptake-and-storage</link>
      <pubDate>Fri, 12 Sep 2014 11:11:00 GMT</pubDate>
      <dc:creator><![CDATA[Bill Frandsen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ax_gfm_framework_team_blog/2014/09/12/dimension-defaulting-part-2-control-uptake-and-storage/</guid>
      <description><![CDATA[Introduction
Continuing this series of blog posts, this post covers how default dimensions can be...]]></description>
      <content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>Continuing this series of blog posts, this post covers how default dimensions can be added to a form to display and allow entry by the user.</p>
<p>This blog post series includes:</p>
<ul>
<li><a title="Financial dimensions discovery" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-1-financial-dimensions-discovery.aspx">Financial dimensions discovery</a></li>
<li>Control uptake and storage&nbsp;(this post)</li>
<li><a title="Copy patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-3-copy-patterns.aspx">Copy patterns</a></li>
<li><a title="Merging patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-4-merging-patterns.aspx">Merging patterns</a></li>
<li><a title="Ledger dimension creation" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-5-ledger-dimension-creation.aspx">Ledger dimension creation</a></li>
<li><a title="Common pattern APIs" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-6-common-pattern-apis.aspx">Common pattern APIs</a></li>
<li><a title="Advanced topics" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-7-advanced-topics.aspx">Advanced topics</a></li>
</ul>
<p><strong>Form uptake and dimensions data model</strong></p>
<p>All forms displaying default dimensions use the <em>DimensionDefaultingController</em>. The controller automatically handles displaying dimensions, loading and saving values and user interaction. These uptake patterns are documented in the <a href="https://technet.microsoft.com/EN-US/library/hh272858.aspx">Accounts and Dimensions whitepaper</a>.</p>
<p>For more in depth details on the entire dimensions data model, refer to the previous blog post series on the dimension framework: <a title="Ledger account combinations - Part 2 (Dimension enumerations, default dimensions) " href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2013/02/15/ledger-account-combinations-part-2-_2800_dimension-enumerations-default-dimensions_2900_-.aspx">Ledger account combinations - Part 2 (Dimension enumerations, default dimensions)</a></p>
<p><strong>Default dimension value storage</strong></p>
<p>The values associated with the dimensions are stored in a separate table apart from the primary table referencing them. For example, the <em>LedgerJournalTable</em> has a <em>DimensionDefault</em> column that holds a foreign key reference to a record in the <em>DimensionAttributeValueSet </em>table. This is the parent record representing the set of values displayed. Each individual value is stored as a separate row in the <em>DimensionAttributeValueSetItem</em> table sharing the same parent record foreign key. This data can be queried directly through these tables or using the <em>DimensionAttributeValueSetItemView </em>as shown in Figure 1 below.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5432.c21.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5432.c21.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/5432.c21.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/5432.c21.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6052.21.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6052.21.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6052.21.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6052.21.png" alt="" border="0" /></a>&nbsp;<br />&nbsp;Figure 1: SQL query and (column trimmed) output for all default dimension values in one set</strong></p>
<p>The output shown in Figure 1 above matches the 3 entered values in the <a title="previous blog post" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-1-financial-dimensions-discovery.aspx">previous blog post</a>, shown here as Figure 2 below.</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4174.22.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4174.22.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4174.22.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4174.22.png" alt="" border="0" /></a>&nbsp;</p>
<p align="center"><strong>Figure 2: Default dimension entry</strong></p>
<p><strong>Empty values</strong></p>
<p>As shown in Figure 1 above, the dimension framework only stores rows for dimensions that have a value entered. No data is stored for empty rows. Therefore, once persisted, the framework does not have the ability to determine the difference between a dimension that did not have a value and one that had a value but was cleared out by a user. In order to save an empty value, a real value must be created with a name indicating it is empty such as &ldquo;empty&rdquo;, &ldquo;n/a&rdquo;, &ldquo;&lt;cleared&gt;&rdquo;, &ldquo;_blank_&rdquo;. The user can then select this value at entry time to impact defaulting behavior as desired.</p>
<p><strong>Immutable data</strong></p>
<p>As with most all dimension data, the records that are inserted into the tables above are immutable. They are only written initially and never subsequently updated or deleted. In Figure 3, when the user adds a Project ID and then saves, the query above in Figure 1 will still return the same three rows. The dimension framework has created a new value set record and 4 additional value set item records linking to the new value set as shown in Figure 4 below.</p>
<p align="center"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4456.23.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4456.23.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4456.23.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4456.23.png" alt="" border="0" /></a>&nbsp;</p>
<p align="center"><strong>Figure 3: Default dimension entry of one added value</strong></p>
<p style="text-align: center;"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6064.c24.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6064.c24.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6064.c24.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6064.c24.png" alt="" border="0" /></a></strong></p>
<p style="text-align: center;"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3480.24.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3480.24.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3480.24.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3480.24.png" alt="" border="0" /></a></strong></p>
<p style="text-align: center;"><strong>Figure 4: SQL query and (column trimmed) output for all default dimension values the new set</strong></p>
<p>In the <a title="next blog post" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-3-copy-patterns.aspx">next blog post</a>, examples of defaulting copy patterns will be explained.</p>]]></content:encoded>
    </item>
    <item>
      <title>Dimension defaulting - Part 1 (Financial dimensions discovery)</title>
      <link>https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/dimension-defaulting-part-1-financial-dimensions-discovery</link>
      <pubDate>Fri, 12 Sep 2014 11:09:00 GMT</pubDate>
      <dc:creator><![CDATA[Bill Frandsen]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ax_gfm_framework_team_blog/2014/09/12/dimension-defaulting-part-1-financial-dimensions-discovery/</guid>
      <description><![CDATA[Introduction
This series of blog posts describes default dimensions, starting from where the...]]></description>
      <content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>This series of blog posts describes default dimensions, starting from where the dimensions originate, the APIs used to merge them, and how they are used to create a ledger dimension. Examples showing the user interface as well as SQL table queries with output are included along with some explanation of APIs and usage examples.</p>
<p>This blog post series includes:</p>
<ul>
<li>Financial dimensions discovery&nbsp;(this post)</li>
<li><a title="Control uptake and storage" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-2-control-uptake-and-storage.aspx">Control uptake and storage</a></li>
<li><a title="Copy patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-3-copy-patterns.aspx">Copy patterns</a></li>
<li><a title="Merging patterns" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-4-merging-patterns.aspx">Merging patterns</a></li>
<li><a title="Ledger dimension creation" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-5-ledger-dimension-creation.aspx">Ledger dimension creation</a></li>
<li><a title="Common pattern APIs" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-6-common-pattern-apis.aspx">Common pattern APIs</a></li>
<li><a title="Advanced topics" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-7-advanced-topics.aspx">Advanced topics</a></li>
</ul>
<p><strong>Default dimension entry</strong></p>
<p>There are approximately 250 forms in the SYS layer for Microsoft Dynamics AX 2012 R3 that allow the entry of default financial dimensions. They appear in their own tab page or fast tab and display a list of dimensions with values and descriptions as shown in Figure 1 below.</p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4745.11.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4745.11.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/4745.11.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/4745.11.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 1: Default dimension entry</strong></p>
<p>In standard demo data, as seen in Figure 2 below, there are over 20 dimensions listed but only 5 are shown in the example in Figure 1 above. How is the list filtered down?</p>
<p style="text-align: center;"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/2821.12.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/2821.12.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/2821.12.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/225x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/2821.12.png" alt="" border="0" /></a></strong></p>
<p style="text-align: center;"><strong>Figure 2: Financial dimension list</strong></p>
<p>The list is determined by starting with the the current company or a specific company specified on a form. The company context is used to obtain a list of all active account structures associated with its ledger. Finally, a union of all of the dimensions in these account structures, plus all active advanced rules associated with those structures is obtained.</p>
<p>In this example, the demo data company being used is &ldquo;SUSB&rdquo;. Opening the <em>Ledger</em> form (General Ledger-&gt;Setup-&gt;Ledger), it shows that two different account structures are used by this company as shown in Figure 3 below.</p>
<p style="text-align: center;"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/2553.13.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/2553.13.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/2553.13.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/2553.13.png" alt="" border="0" /></a></strong></p>
<p style="text-align: center;"><strong>Figure 3: Ledger configuration for company &ldquo;SUSB&rdquo;</strong></p>
<p>Selecting the first account structure and clicking the Configure account structure button shows 3 dimensions are used by that account structure as shown in Figure 4 below. Selecting the second account structure shows 5 dimensions are used in that account structure as shown in Figure 5 below.</p>
<p style="text-align: center;"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0743.14.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0743.14.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0743.14.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0743.14.png" alt="" border="0" /></a></strong></p>
<p style="text-align: center;"><strong>Figure 4: Balance sheet account structure setup for company &ldquo;SUSB&rdquo;</strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6378.15.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6378.15.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6378.15.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6378.15.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 5: Profit and loss account structure setup for company &ldquo;SUSB&rdquo;</strong></p>
<p>Comparing the dimensions from both account structures, there are a total of 5 unique dimensions.&nbsp; Four of these dimensions account for dimensions displaying in the default dimensions. In addition to these dimensions, dimensions from advanced rule structures linked to those account structures through advanced rules are also examined.&nbsp; In this example, it results in a fifth dimension added to the default entry, LicensePlate.</p>
<p>It is also important to note that the MainAccount dimension is not shown in most default dimension lists. The exception to this is budgeting which does explicitly include the MainAccount as part of the list of default dimensions.</p>
<p>Figures 6 and 7 below show the advanced rule and structure resulting in the license plate dimension being display in the default dimensions. <em>*Note: This was added specifically for this example and does not exist in standard demo data.</em></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3007.16.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3007.16.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/3007.16.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/3007.16.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 6: Advanced rule linked to the balance sheet structure</strong></p>
<p align="center"><strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1273.17.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1273.17.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/1273.17.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/1273.17.png" alt="" border="0" /></a></strong></p>
<p align="center"><strong>Figure 7: &nbsp;The rule structure for LicensePlate</strong></p>
<p><strong>API for default dimensions list</strong></p>
<p>The default dimension controller determines which dimensions are applicable for a company using the <em><span style="text-decoration: underline;">DimensionCache::getDimensionAttributeSetForLedger() </span></em>API. &nbsp;</p>
<p>In the <a title="next blog post" href="https://blogs.msdn.com/b/ax_gfm_framework_team_blog/archive/2014/09/12/dimension-defaulting-part-2-control-uptake-and-storage.aspx">next blog post</a>, the hook-up to allow entry of default dimensions on a form and the storage used behind the control will be explained.</p>]]></content:encoded>
    </item>
    <item>
      <title>Rebuilding the dimension set balance through code</title>
      <link>https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/rebuilding-the-dimension-set-balance-through-code</link>
      <pubDate>Thu, 17 Apr 2014 12:06:00 GMT</pubDate>
      <dc:creator><![CDATA[Jason Blackwood Stone]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ax_gfm_framework_team_blog/2014/04/17/rebuilding-the-dimension-set-balance-through-code/</guid>
      <description><![CDATA[The dimension set balance (DSB) rebuild will recreate all balances for each dimension set that is...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: arial, helvetica, sans-serif; font-size: small;">The dimension set balance (DSB) rebuild will recreate all balances for each dimension set that is initialized. It can be performed for a single company or for all companies at once.</span></p>
<p><span style="font-family: arial, helvetica, sans-serif; font-size: small;">The DSB rebuild needs to be run if the detailed GL data is deleted or modified by any customization or other means outside of the core AX application. This includes jobs and using SQL directly.</span></p>
<p><span style="font-family: arial, helvetica, sans-serif; font-size: small;">Only invoke the DSB rebuild exactly once after all deleting and modifying of the detailed GL data is complete. Invoking the DSB rebuild more than once for the same change is unnecessary and can result in temporary degradation in performance.</span></p>
<p><span style="font-family: arial, helvetica, sans-serif; font-size: small;">To perform a DSB rebuild you can call DimensionFocusInitializeBalance::scheduleProcessFullRebuild(). This will schedule a batch job to rebuild balances. Pass in Ledger::current() if the detailed GL data that was deleted or modified was limited to the current company/ledger. Don&rsquo;t pass a ledger parameter value if the detailed GL data that was deleted or modified was in multiple companies/ledgers. It is a normal AX practice to perform updates to a single company/ledger at a time.</span></p>
<p><span style="font-family: arial, helvetica, sans-serif; font-size: small;">Here is an example of a form close method which would be a logical place to do a DSB rebuild if updates came from the form. It is important to note that just closing the form with no changes should not invoke the full DSB rebuild.</span></p>
<p style="padding-left: 30px;"><span style="font-family: arial, helvetica, sans-serif; font-size: small;"><span style="color: #0000ff;">private void</span> close()</span><br /><span style="font-family: arial, helvetica, sans-serif; font-size: small;">{</span></p>
<p style="padding-left: 30px;"><span style="font-family: arial, helvetica, sans-serif; font-size: small;">&nbsp;&nbsp;&nbsp; if (changesMade)</span><br /><span style="font-family: arial, helvetica, sans-serif; font-size: small;">&nbsp;&nbsp;&nbsp; {</span></p>
<p style="padding-left: 30px;"><span style="font-family: arial, helvetica, sans-serif; font-size: small;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DimensionFocusInitializeBalance::scheduleProcessFullRebuild(Ledger::current());</span><br /><span style="font-family: arial, helvetica, sans-serif; font-size: small;">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="padding-left: 30px;"><span style="font-family: arial, helvetica, sans-serif; font-size: small;">}</span></p>
<pre class="scroll"><code class="csharp"><br /></code></pre>
<p>&nbsp; &nbsp; &nbsp; &nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Financial consolidations and currency translation for Dynamics AX 2012 whitepaper now available</title>
      <link>https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/financial-consolidations-and-currency-translation-for-dynamics-ax-2012-whitepaper-now-available</link>
      <pubDate>Mon, 27 Jan 2014 19:29:06 GMT</pubDate>
      <dc:creator><![CDATA[April Olson]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ax_gfm_framework_team_blog/2014/01/27/financial-consolidations-and-currency-translation-for-dynamics-ax-2012-whitepaper-now-available/</guid>
      <description><![CDATA[The Corporate Performance Management team and&nbsp;Microsoft Dynamics Information Experience team...]]></description>
      <content:encoded><![CDATA[<p>The Corporate Performance Management team and&nbsp;Microsoft Dynamics Information Experience team are happy to announce the availability of the Financial Consolidations and Currency Translation whitepaper. The paper is designed to show finance and accounting users and application consultants the approach that Management Reporter and Dynamics AX 2012 take when needing to perform multi-company and multi-currency consolidations.</p>
<p>The paper can be downloaded at: <span style="font-family: 'Calibri','sans-serif'; font-size: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;"><a href="https://www.microsoft.com/en-us/download/details.aspx?id=41645">https://www.microsoft.com/en-us/download/details.aspx?id=41645</a></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Dimension defaulting in accounting distributions, Part 5 - Defaulting for related documents</title>
      <link>https://docs.microsoft.com/archive/blogs/ax_gfm_framework_team_blog/dimension-defaulting-in-accounting-distributions-part-5-defaulting-for-related-documents</link>
      <pubDate>Thu, 19 Dec 2013 10:23:00 GMT</pubDate>
      <dc:creator><![CDATA[Victor Stehmann]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/ax_gfm_framework_team_blog/2013/12/19/dimension-defaulting-in-accounting-distributions-part-5-defaulting-for-related-documents/</guid>
      <description><![CDATA[Until now we looked at defaulting within the context of a single document - a purchase order....]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: small;">Until now we looked at defaulting within the context of a single </span><span style="font-size: small;">document - a purchase order. Documents can be created based on other documents. </span><span style="font-size: small;">For example a purchase order can be created based on a purchase requisition or </span><span style="font-size: small;">a product receipt based on a purchase order. In these scenarios dimension </span><span style="font-size: small;">values from the predecessor document are also used to default into accounting </span><span style="font-size: small;">distributions.</span></p>
<p><span style="font-size: small;">The below screenshot shows accounting distributions for a purchase </span><span style="font-size: small;">order for a procurement category Workplace services. The accounting distribution for extended </span><span style="font-size: small;">price has been split into 2 distributions. The line default value 00000024 for </span><span style="font-size: small;">Department has been modified from 00000024 to 00000026 on line 1 and from 00000022 to 00000025 on </span><span style="font-size: small;">line 2.&nbsp;</span>&nbsp;</p>
<p><span style="font-size: x-small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0675.A.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0675.A.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/0675.A.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/0675.A.PNG" alt="" width="608" height="279" border="0" /></a></span></p>
<p><span style="font-size: x-small;">Image 001 - PO Accounting distributions procurement category split</span></p>
<p>&nbsp;</p>
<p><span style="font-size: small;">When the&nbsp;product receipt&nbsp;is created from this purchase order the </span><span style="font-size: small;">accounting distributions for the&nbsp;receipt line will be split in the same ratio </span><span style="font-size: small;">as the purchase order and will have the same dimension values as the purchase </span><span style="font-size: small;">order distributions. In the below shown example in Image 002 the product receipt triggers a different main account (211250) which requires an additional dimension for Purpose. The value for Purpose (Site1) has been defaulted from the purchase order line default dimensions.</span></p>
<p><span style="font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6758.A1.PNG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6758.A1.PNG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/50/86/6758.A1.PNG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-50-86/6758.A1.PNG" alt="" border="0" /></a></span></p>
<p><span style="font-size: x-small;">Image 002 -&nbsp;Accounting distributions for the product receipt</span></p>]]></content:encoded>
    </item>
  </channel>
</rss>