<?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>Christian's NAV Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/cabeln/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/cabeln/feed.xml</link>
    <description>Blog about Add-ins for the Role Tailored Client of Microsoft Dynamics NAV</description>
    <lastBuildDate>Tue, 16 Apr 2019 04:50:15 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Hands-On AddIn Workshop Dynamics NAV 2013: Creating a Bing Map AddIn with server side geocoding</title>
      <link>https://docs.microsoft.com/archive/blogs/cabeln/hands-on-addin-workshop-dynamics-nav-2013-creating-a-bing-map-addin-with-server-side-geocoding</link>
      <pubDate>Wed, 14 Nov 2012 03:27:00 GMT</pubDate>
      <dc:creator><![CDATA[cabeln]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cabeln/2012/11/14/hands-on-addin-workshop-dynamics-nav-2013-creating-a-bing-map-addin-with-server-side-geocoding/</guid>
      <description><![CDATA[Preface
Recently I had the honor to give a Hands On workshop on Client Extensibility for Dynamics...]]></description>
      <content:encoded><![CDATA[<h1>Preface</h1>
<p>Recently I had the honor to give a Hands On workshop on Client Extensibility for Dynamics NAV 2013 at the Airlift event in Leipzig / Germany.</p>
<p>I thought I create a new workshop with a new AddIn - A Bing Map showing a customer on a map, including Geocoding. The presentation and workshop files are available for download here:</p>
<ul>
<li>Step by Step Presentation: <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/NAV2013%20BingMap%20AddIn/4863.Workshop%20-%20BingMap%20AddIn%20for%20NAV%202013.pptx" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-NAV2013+BingMap+AddIn/4863.Workshop-_2D00_-BingMap-AddIn-for-NAV-2013.pptx">Download here</a></li>
<li>Workshop files for all steps: <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/NAV2013%20BingMap%20AddIn/8461.Workshop.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-NAV2013+BingMap+AddIn/8461.Workshop.zip">Download here</a></li>
<li>AddIn registration tools for Dynamics NAV 2013<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/NAV2013%20AddInRegistrationTool/7652.AddInRegistrationToolKit.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-NAV2013+AddInRegistrationTool/7652.AddInRegistrationToolKit.zip">:&nbsp;Download here</a></li>
</ul>
<p>&nbsp;</p>
<h1>The Workshop</h1>
<p>In order to go through the workshop you need to have</p>
<div><ol>
<li>Dynamics NAV 2013 installed&nbsp;</li>
<li>your Developer License loaded into the NAV system</li>
<li>Visual Studio 2012 Professional installed</li>
<li>my&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/0081.DynamicsNAV2013ClientAddIns.vsix" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/0081.DynamicsNAV2013ClientAddIns.vsix">Visual Studio Templates for NAV 2013</a>&nbsp;installed&nbsp;</li>
<li>the&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/NAV2013%20AddInRegistrationTool/7652.AddInRegistrationToolKit.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-NAV2013+AddInRegistrationTool/7652.AddInRegistrationToolKit.zip">AddIn Registration toolkit for NAV 2013</a>&nbsp;added to your data base and the assembly placed in the Client AddIns directory</li>
<li>the&nbsp;<a href="https://www.microsoft.com/en-us/download/details.aspx?id=27165" target="_blank">Bing Map Control SDK</a>&nbsp;installed</li>
</ol></div>
<p>&nbsp;You will also need to request your self a developer key in order to use the Bing Map API, which you can do starting from the <a href="https://www.microsoft.com/maps/developers/web.aspx" target="_blank">Bing Maps Developer Portal</a>.</p>
<p>&nbsp;</p>
<p>The Workshop is build in 6 steps (please excuse some German terms in the slides below):</p>
<ol>
<li>It starts with creating a basic AddIn using the Visual Studio templates and adds the Map WPF control and shows a Map part in the Windows Client.<br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/0317.Slide7.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/0317.Slide7.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/0317.Slide7.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/0317.Slide7.JPG" alt="" border="0" /></a>&nbsp;</li>
<li>Then it adds server side controlled authentication, in order to set the Bing Map Key. This is done using a custom interface method.<br />&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/8233.Slide8.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/8233.Slide8.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/8233.Slide8.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/8233.Slide8.JPG" alt="" border="0" /></a>&nbsp;</li>
<li>This step adds the capability to position the map, zoom in and out&nbsp;problematically and control the view. In this step a serializable .Net object is introduces that is passed for the location as a parameter<br />&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/0435.Slide9.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/0435.Slide9.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/0435.Slide9.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/0435.Slide9.JPG" alt="" border="0" /></a></li>
<li>Now we add a layer for pushpins and set a pushpin for a customer. We introduce client side geocoding here.<br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/0564.Slide10.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/0564.Slide10.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/0564.Slide10.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/0564.Slide10.JPG" alt="" border="0" /></a>&nbsp;</li>
<li>In this step geocoding is moved server side and the position is requested first time a customer shall be located on a map. Th elocation is stored in the customer table.<br />&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/0020.Slide11.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/0020.Slide11.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/0020.Slide11.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/0020.Slide11.JPG" alt="" border="0" /></a></li>
<li>Finally we introduce the concept of asynchronous geocoding on the server. Such that the response of a geocoding request is not awaited and blocks the execution any longer. As soon as the asynchronous request returns, the customer location is updated in the database. The client is using the PingPong AddIn to poll for updates.<br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/3005.Slide12.JPG" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/3005.Slide12.JPG"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/3005.Slide12.JPG" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/3005.Slide12.JPG" alt="" border="0" /><br /><br /><br /></a>&nbsp;</li>
<li>The seventh steps is not included, but left for your own tinkering: Move the geocoding request into a code unit that is used in a Job Queue. This could allow automatic geocoding: for addresses where location is missing, but last geocoding did not return empty results or for addresses that have changed. With a job queue this can be then done behind the scenes, without involving the client.<br />(And this is of course the only good way to do geo coding, yet for the purpose of experimentation in the workshop I have implemented it in different tiers.)&nbsp;</li>
</ol>
<p>&nbsp;</p>
<h1>How to just try out the final step:</h1>
<ol>
<li>Copy all dlls from Workshop folder e.g. below for Step 6 in a subfolder (e.g BingMap) the Client AddIns directory :<br />"\Workshop\Step 6 (Serverside Async Geocoding)\MyBingMapAddIn\BingMapAddIn\bin\Debug\*.dll" =&gt;&nbsp;<br />"C:\Program Files (x86)\Microsoft Dynamics NAV\70\RoleTailored Client\Add-ins\BingMap\"<br />&nbsp;</li>
<li>Copy MyBingGeocoder.dll from Workshop folder e.g. below for Step 6 in a subfolder (e.g BingMap) the Server AddIns directory :<br />"\Workshop\Step 6 (Serverside Async Geocoding)\MyBingMapAddIn\BingMapAddIn\bin\Debug\MyBingGeocoder.dll" =&gt;<br />"C:\Program Files\Microsoft Dynamics NAV\70\Service\Add-ins\BingMap\"<br />&nbsp;</li>
<li>Register AddIn. You may use the AddIn toolkit in the resources directory for that. <br />Copy the AddInToolkit forlder into the Client AdIns folder: <br />"\Workshop\Reources\AddInToolkit\" =&gt;&nbsp; "C:\Program Files (x86)\Microsoft Dynamics NAV\70\RoleTailored Client\Add-ins\AddInToolkit\<br />Run the page 65006 "Client Add-in registration" from the objects in the fob file "AddInRegistrationTool-V7.fob"<br />Click on "Check AddIn Files" and wait until list is updated. Check then the "MyBingMapAddIn" in order to register it.<br />&nbsp;</li>
<li>Import / merge the objects from fob / text files:<br /><br />Part: "MyBingMapPart"<br />Changes to table Customer. for Latitude,Longitude,IsGeoCoded,GeocodingFailed and trigger code to maintain those fields<br />Customer list:utilize BingMapPart with sub page link<br />optional: Customer card: show geolocation fields<br />&nbsp;</li>
<li>You may update the global Text constant "BingAppKey" in the "MyBingMapPart" with a key you have requested for yourself.<br />(The key contained will be disabled soon.)<br />&nbsp;</li>
<li>Run the customer page and makew shure the BingMap part is showing. While scrolling through the list addresses will be geocoded and the <br />selected customer shown on the map if address could be geocoded.<br />When address changes, location will b ereset and new geocoding will be issued, as soon as customer selected again.<br />Geocoding happens asynchronous. If geocoding is not possible maps zooms out to whole world.</li>
</ol>
<p>&nbsp;</p>
<p>I hope this workshop is somewhat helpful, inspiring, ...</p>
<p>And please keep enjoying to develop cool extensions for Dynamics NAV !&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<span style="font: large/18.14px 'times new roman', times; text-align: left; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ced5db; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><em>Christian Abeln</em></span><span style="font: 12px/18.14px 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; text-align: left; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ced5db; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span class="Apple-converted-space">&nbsp;</span></span><br style="font: 12px/18.14px 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; text-align: left; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ced5db; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" /><span style="font: 12px/18.14px 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; text-align: left; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ced5db; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">Senior Program Manager<span class="Apple-converted-space">&nbsp;</span></span><br style="font: 12px/18.14px 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; text-align: left; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ced5db; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" /><span style="font: 12px/18.14px 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; text-align: left; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ced5db; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">Microsoft Dynamics NAV</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Sticky Post: Download links from the blog posts in one spot</title>
      <link>https://docs.microsoft.com/archive/blogs/cabeln/sticky-post-download-links-from-the-blog-posts-in-one-spot</link>
      <pubDate>Tue, 13 Nov 2012 16:00:00 GMT</pubDate>
      <dc:creator><![CDATA[cabeln]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cabeln/2012/11/13/sticky-post-download-links-from-the-blog-posts-in-one-spot/</guid>
      <description><![CDATA[Find here some downloads from the Blog Posts collected in one...]]></description>
      <content:encoded><![CDATA[<h2>Find here some downloads from the Blog Posts collected in one spot.</h2>
<p>&nbsp;</p>
<table style="width: 796px;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td align="center" width="43"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8306.image_thumb_7644D226.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8306.image_5F00_thumb_5F00_7644D226.png" alt="" width="32" height="32" />&nbsp;</td>
<td width="751">
<p>Dynamics NAV 2013 -&nbsp;Bing Map Integration Workshop: Step by Step Presentation:&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/NAV2013%20BingMap%20AddIn/4863.Workshop%20-%20BingMap%20AddIn%20for%20NAV%202013.pptx" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-NAV2013+BingMap+AddIn/4863.Workshop-_2D00_-BingMap-AddIn-for-NAV-2013.pptx">Download here</a>&nbsp;(partly in German)</p>
</td>
</tr>
<tr>
<td align="center" width="43"><img src="https://professional-power-tool-guide.com/wp-content/uploads/2011/10/tools.png" alt="" width="32" height="32" />&nbsp;</td>
<td width="751">Dynamics NAV 2013 -&nbsp;Bing Map Integration Workshop:&nbsp;Project files for all steps:&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/NAV2013%20BingMap%20AddIn/8461.Workshop.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-NAV2013+BingMap+AddIn/8461.Workshop.zip">Download here</a>&nbsp;</td>
</tr>
<tr>
<td align="center" width="43"><img src="https://professional-power-tool-guide.com/wp-content/uploads/2011/10/tools.png" alt="" width="32" height="32" />&nbsp;</td>
<td width="751">Dynamics NAV 2013 -&nbsp;AddIn registration tools<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/NAV2013%20AddInRegistrationTool/7652.AddInRegistrationToolKit.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-NAV2013+AddInRegistrationTool/7652.AddInRegistrationToolKit.zip">:&nbsp;Download here</a>&nbsp;</td>
</tr>
<tr>
<td align="center" width="43"><img src="https://professional-power-tool-guide.com/wp-content/uploads/2011/10/tools.png" alt="" width="32" height="32" />&nbsp;</td>
<td width="751">Dynamics NAV 2013 - Full&nbsp;Source of the Lync Communication AddIn :&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/3441.LyncCommunicationAddInSample.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/3441.LyncCommunicationAddInSample.zip">Download here</a></td>
</tr>
<tr>
<td align="center" width="43"><img src="https://professional-power-tool-guide.com/wp-content/uploads/2011/10/tools.png" alt="" width="32" height="32" />&nbsp;</td>
<td width="751">
<p>Dynamics NAV 2013 -&nbsp;<a style="font-size: small;" href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/0081.DynamicsNAV2013ClientAddIns.vsix" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/0081.DynamicsNAV2013ClientAddIns.vsix" target="_blank">Add-In templates for Visual Studio 2010 and Visual Studio 2012</a><span style="font-size: small;">&nbsp;(Express not supported)</span><span style="font-size: small;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
</td>
</tr>
<tr>
<td align="center" width="46"><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/21/78/metablogapi/1033.image_64D4714E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/1033.image_5F00_64D4714E.png"><img style="border: 0px currentColor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8306.image_thumb_7644D226.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8306.image_5F00_thumb_5F00_7644D226.png" alt="image" width="33" height="32" border="0" /></a></span></td>
<td width="748">Dynamics NAV 2013 Presentation <span style="font-size: x-small;"><span style="font-size: x-small;">&ndash;</span></span>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/5582.DirectionsEMEA2012%20-%20NAV2013%20TECH11%20-%20Mastering%20the%20Visualization%20AddIns.pptx" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/5582.DirectionsEMEA2012-_2D00_-NAV2013-TECH11-_2D00_-Mastering-the-Visualization-AddIns.pptx">Mastering the Visualization Add-ins (Directions EMEA 2012)</a></td>
</tr>
<tr>
<td align="center" width="46"><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/21/78/metablogapi/8400.image_57701271.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8400.image_5F00_57701271.png"><img style="margin: 0px; border: 0px currentColor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8015.image_thumb_7D65C2C7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8015.image_5F00_thumb_5F00_7D65C2C7.png" alt="image" width="33" height="32" border="0" /></a></span></td>
<td width="748"><span style="font-size: x-small;">Dynamics&nbsp;NAV 2009 R2 Presentation &ndash; <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/6470.Directions2011-D100%20Client%20Extensibility%20in%20Microsoft%20Dynamics%20NAV%202009%20R2%20-%20animated.pptx" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/6470.Directions2011_2D00_D100-Client-Extensibility-in-Microsoft-Dynamics-NAV-2009-R2-_2D00_-animated.pptx">Client Extensibility in Microsoft Dynamics NAV 2009 R2 (Directions US 2011)</a></span></td>
</tr>
<tr>
<td align="center" width="46"><span style="font-size: x-small;"><img src="https://cdn3.iconfinder.com/data/icons/beos/Jabber.png" alt="" width="32" height="32" /></span></td>
<td width="748"><span style="font-size: x-small;">Dynamics&nbsp;NAV 2009 R2 Sample &ndash; <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/7534.DocumentViewerAddIn.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/7534.DocumentViewerAddIn.zip">Document Viewer</a> </span><br /><span style="font-size: x-small;">Dynamics&nbsp;NAV 2009 R2 Sample &ndash; <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/5582.Directions%202010%20US%20Sample%20Code.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/5582.Directions-2010-US-Sample-Code.zip">Month Day calendar Add-In showing generic data serialization (Directions US 2010)</a></span></td>
</tr>
<tr>
<td align="center" width="46"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3348.image_658436B1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3348.image_5F00_658436B1.png"><span style="font-size: x-small;"><img style="border: 0px currentColor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/1682.image_thumb_643F9DD2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/1682.image_5F00_thumb_5F00_643F9DD2.png" alt="image" width="36" height="36" border="0" /></span></a></td>
<td width="748">
<p><span style="font-size: x-small;">Dynamics&nbsp;NAV 2009 <span style="font-size: x-small;">&ndash;</span> Timeline visualization on </span><a href="https://mbs.microsoft.com/partnersource/deployment/resources/productreleases/BusinessDataVisualization_NAV2009"><span style="font-size: x-small;">Partner Source</span></a><span style="font-size: x-small;"> and </span><a href="https://mbs.microsoft.com/customersource/downloads/servicepacks/BusinessDataVisualization_NAV2009"><span style="font-size: x-small;">Customer Source</span></a></p>
</td>
</tr>
<tr>
<td align="center" width="49"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/7043.image_388ED3D6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/7043.image_5F00_388ED3D6.png"><span style="font-size: x-small;"><img style="border: 0px currentColor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/1373.image_thumb_7B1E6F4E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/1373.image_5F00_thumb_5F00_7B1E6F4E.png" alt="image" width="36" height="36" border="0" /></span></a></td>
<td width="745"><span style="font-size: x-small;">Dynamics&nbsp;NAV 2009 <span style="font-size: x-small;">&ndash;</span> Treemap visualization on </span><a href="https://mbs.microsoft.com/partnersource/deployment/resources/productreleases/BusinessDataVisualization_NAV2009"><span style="font-size: x-small;">PartnerSource</span></a><span style="font-size: x-small;"> and on </span><a href="https://mbs.microsoft.com/customersource/documentation/setupguides/BusinessDataVisualization_NAV2009.htm"><span style="font-size: x-small;">CustomerSource</span></a></td>
</tr>
<tr>
<td align="center" width="52"><span style="font-size: x-small;"><img src="https://professional-power-tool-guide.com/wp-content/uploads/2011/10/tools.png" alt="" width="32" height="32" /></span></td>
<td valign="top" width="743"><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/21/78/7380.DynamicsNAV2009ClientAddIns.vsix" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/7380.DynamicsNAV2009ClientAddIns.vsix" target="_blank"><span style="font-size: x-small;">Dynamics NAV&nbsp;2009 Tool </span></a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/2678.DynamicsNAV%20Add-In%20Template%20-%20Add-In%20StarterPack.vsi" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/2678.DynamicsNAV-Add_2D00_In-Template-_2D00_-Add_2D00_In-StarterPack.vsi" target="_blank"><span style="font-size: x-small;">&ndash; </span></a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/7380.DynamicsNAV2009ClientAddIns.vsix" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/7380.DynamicsNAV2009ClientAddIns.vsix" target="_blank"><span style="font-size: x-small;">Add-In templates for Visual Studio 2010 <br /></span></a><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/2678.DynamicsNAV%20Add-In%20Template%20-%20Add-In%20StarterPack.vsi" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/2678.DynamicsNAV-Add_2D00_In-Template-_2D00_-Add_2D00_In-StarterPack.vsi" target="_blank"><span style="font-size: x-small;">Dynamics NAV&nbsp;2009 Tool &ndash; Add-In templates for Visual Studio 2008</span></a> <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/5282.DynamicsNAV%20AddIn%20Importer%20Installer.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-21-78/5282.DynamicsNAV-AddIn-Importer-Installer.zip"><span style="font-size: x-small;">Dynamics NAV&nbsp;2009 Tool &ndash; Registration for Add-Ins ver 1.1</span> </a>(<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/6237.Register%20Client%20Add-Ins.txt" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/6237.Register-Client-Add_2D00_Ins.txt" target="_blank">txt version of the objects</a>)</span></td>
</tr>
<tr>
<td align="center" width="54"><span style="font-size: x-small;"><img src="https://cdn3.iconfinder.com/data/icons/beos/Jabber.png" alt="" width="32" height="32" /></span></td>
<td width="741"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/6646.BitmapFlagsInTheRepeater.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/6646.BitmapFlagsInTheRepeater.zip"><span style="font-size: x-small;">Dynamics NAV&nbsp;2009 - Sample objects for showing bitmaps in the NAV repeater from CAL</span></a></td>
</tr>
<tr>
<td align="center" width="54"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/6472.image_289F8F12.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/6472.image_5F00_289F8F12.png"><span style="font-size: x-small;"><img style="border: 0px currentColor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8535.image_thumb_546FE301.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8535.image_5F00_thumb_5F00_546FE301.png" alt="image" width="32" height="32" border="0" /></span></a></td>
<td width="741"><a href="https://training.partner.microsoft.com/learning/app/management/LMS_ActDetails.aspx?UserMode=0&amp;ActivityId=720796"><span style="font-size: x-small;">Dynamics NAV&nbsp;2009 R2&nbsp;&nbsp; Recorded &ldquo;Hot Topic&rdquo; </span></a><span style="font-size: x-small;"><a href="https://training.partner.microsoft.com/learning/app/management/LMS_ActDetails.aspx?UserMode=0&amp;ActivityId=720796"><span style="font-size: x-small;">&ndash;</span> </a> Business Data Visualizations</span> <br /><a href="https://training.partner.microsoft.com/learning/app/management/LMS_ActDetails.aspx?UserMode=0&amp;ActivityId=548885"><span style="font-size: x-small;">Dynamics NAV&nbsp;2009 SP1 Recorded &ldquo;Hot Topic&rdquo; </span></a><span style="font-size: x-small;"><a href="https://training.partner.microsoft.com/learning/app/management/LMS_ActDetails.aspx?UserMode=0&amp;ActivityId=548885"><span style="font-size: x-small;"><span style="font-size: x-small;">&ndash;</span></span> </a>Add-ins for the Role Tailored Client</span></td>
</tr>
<tr>
<td align="center" width="56"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/0020.image_26165D54.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/0020.image_5F00_26165D54.png"><span style="font-size: x-small;"><img style="border: 0px currentColor; display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/1273.image_thumb_25AA2A5F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/1273.image_5F00_thumb_5F00_25AA2A5F.png" alt="image" width="33" height="32" border="0" /></span></a></td>
<td valign="top" width="739"><span style="font-size: x-small;">Dynamics&nbsp;NAV 2009 <span style="font-size: x-small;">Presentation </span><span style="font-size: x-small;"><span style="font-size: x-small;">&ndash;</span></span>&nbsp;</span><a href="https://www.cooldudette.net/BlogFiles/D115.zip"><span style="font-size: x-small;">Client Extensibility - Introduction, How to use Add-ins</span></a><span style="font-size: x-small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /> Dynamics&nbsp;NAV 2009 <span style="font-size: x-small;">Presentation </span><span style="font-size: x-small;"><span style="font-size: x-small;">&ndash;</span></span>&nbsp;</span><a href="https://www.cooldudette.net/BlogFiles/D116.zip"><span style="font-size: x-small;">Client Extensibility - How to create Add-ins</span></a></td>
</tr>
<tr>
<td align="center" width="56">&nbsp;</td>
<td width="739">&nbsp;</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-family: garamond;"><span style="font-size: large;"><em>Christian Abeln</em> <br /></span></span>Senior Program Manager <br />Microsoft Dynamics NAV</p>]]></content:encoded>
    </item>
    <item>
      <title>Source code release of the Lync communication AddIn for Dynamics NAV 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/cabeln/source-code-release-of-the-lync-communication-addin-for-dynamics-nav-2013</link>
      <pubDate>Thu, 01 Nov 2012 02:37:00 GMT</pubDate>
      <dc:creator><![CDATA[cabeln]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cabeln/2012/11/01/source-code-release-of-the-lync-communication-addin-for-dynamics-nav-2013/</guid>
      <description><![CDATA[I am glad to announce the availability of the Lync AddIn, and even in source code! This is actually...]]></description>
      <content:encoded><![CDATA[<p>I am glad to announce the availability of the Lync AddIn, and even in source code! This is actually a good sample for an AddIn that has integrates nicely with other fields on a page, yet provides a very custom functionality and rendering.</p>
<p>Originally I had built this AddIn as a showcase for a partner conference. Later we considered to add it to the shipping code in Dynamics NAV 2013, yet as an outcome of our scoping decisions we did not want add it at the end of this release cycle.</p>
<p>In this blog post I want to describe the supported usage scenarios and provide the steps to use the source and integrate the AddIn into a NAV database. A more technical view from an implementation standpoint can be found in <a href="https://blogs.msdn.com/b/cabeln/archive/2012/08/17/add-ins-in-dynamics-nav-2013-2-3-add-in-exposing-custom-api-to-c-al.aspx">this Blog Post</a>.</p>
<p>Please find the download here:&nbsp;<span id="ctl00_ctl00_OuterTaskRegion_TaskRegion_TaskRegion_CreatePost_ctl06_PostAttachment_ctl01_serverfilename" columns="50"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/3441.LyncCommunicationAddInSample.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/3441.LyncCommunicationAddInSample.zip">LyncCommunicationAddInSample.zip</a></span><span>&nbsp;</span></p>
<p>But let&rsquo;s start with the user scenario, this control wants to solve:</p>
<h1>Base scenario: Communicate from within Dynamics NAV</h1>
<p>As an end user who gets frequently into contact with customers / vendors I like the fact that I can use a unified communication system in NAV to communicate with my customer &amp; vendor contacts. The unified communication system brings together all the communication end points which a contact has published - like mobile &amp; office phone number, IM address and even address for IP telephony and screen sharing.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/4721.LyncPost_1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/4721.LyncPost_5F00_1.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/4721.LyncPost_1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/4721.LyncPost_5F00_1.png" border="0" /></a></p>
<p></p>
<h3>Monitoring availability / presence</h3>
<p>But the real value comes when I see the availability of a contact right in my screen. I can see if a contact is available and if not I can even drag a small communication card out of Dynamics NAV, pin it to my desktop and monitor the availability state. As soon as my communication contact becomes available I will ping him or start a telephone&nbsp;call.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/8510.LyncPost_2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/8510.LyncPost_5F00_2.png"><img width="357" height="163" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/8510.LyncPost_2.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/8510.LyncPost_5F00_2.png" border="0" /></a></p>
<p></p>
<p>In factboxes I see a smaller view of the presence field but still have the ability of monitoring presence, opening the contact card and starting a communication.</p>
<p>And if I am is not logged in to Lync on the local machine, the field will have the following appearance and the search button will be disabled. This state will automatically update to the standard communication appearance, if I sign into Lync.</p>
<p>On Task pages:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/7802.LyncPost_3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/7802.LyncPost_5F00_3.png"><img width="60%" height="60%" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/7802.LyncPost_3.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/7802.LyncPost_5F00_3.png" border="0" /></a></p>
<p>In Factboxes:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/8475.LyncPost_4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/8475.LyncPost_5F00_4.png"><img width="60%" height="60%" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/8475.LyncPost_4.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/8475.LyncPost_5F00_4.png" border="0" /></a></p>
<p>&nbsp;</p>
<h3>Finding a communication contact</h3>
<p>But how do I find the communication address?</p>
<p>The Lync communication field provides a search functionality, that suggests search input, that is harvested from artifacts from the Dynamics NAV page - like email, Name, Company, etc. With such artifacts or with my own search input I can search for a communication contact in my and connected communication systems - depending on the federation.</p>
<p>But also if I simply type in the live ID address or the yahoo address for a contact that I already know, the contact will be accepted as a communication endpoint, even if the federation for search between the two communication systems has not been full enabled.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/5556.LyncPost_5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/5556.LyncPost_5F00_5.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/5556.LyncPost_5.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/5556.LyncPost_5F00_5.png" border="0" /></a></p>
<p></p>
<h3>Supported communication systems</h3>
<p>The supported communication systems on my side is Lync, and whether my company has its own installation of Lync Enterprise or we are using Office 365 with its Lync offering, we are able to communicate with whatever other communication systems have been federated with our instance. This can be for example Yahoo, Live Messenger or other companies using of Lync Enterprise of Office 365.</p>
<h1></h1>
<h1>How to use the source code, build the AddIn, distribute it and integrate it into Dynamics NAV</h1>
<p>Please find the download here:&nbsp;<span id="ctl00_ctl00_OuterTaskRegion_TaskRegion_TaskRegion_CreatePost_ctl06_PostAttachment_ctl01_serverfilename" columns="50"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/3441.LyncCommunicationAddInSample.zip" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/3441.LyncCommunicationAddInSample.zip">LyncCommunicationAddInSample.zip</a></span>&nbsp;</p>
<h3>Following are the steps to build the Lync AddIn library from the Source Code</h3>
<ol>
<li><a href="https://www.microsoft.com/en-us/download/details.aspx?id=18898">Download of the Lync SDK</a>, and run the installation.<br />&nbsp;</li>
<li>Open the solution LyncComunicationAddIn.sln in Visual Studio 2013<br />&nbsp;</li>
<li>Update references to the Lync controls libraries from the SDK and the Dynamics NAV extensibility library (Microsoft.Dynamics.Framework.UI.Extensibility.dll) from the installed Dynamics NAV 2013 product.<br />&nbsp;</li>
<li>The Lync libraries can be found in the Lync SDK directory, by default:&nbsp; <br /> &ldquo;C:\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\&rdquo;<br />&nbsp;</li>
<li>The Dynamics NAV extensibility library is typically in the following directory:<br />&ldquo;C:\Program Files (x86)\Microsoft Dynamics NAV\70\RoleTailored Client\&rdquo;<br />&nbsp;</li>
<li>For the latter reference, make sure that you set the property CopyLocal to false &ndash; we do not want this library to be copied to the output directory or even copy it into the Add-Ins directory for the Lync Add-In when we copy it to an installed Dynamics NAV instance.<br />&nbsp;</li>
<li>Compile the solution in Release build and identify the output folder under Bin/Release folder. Deploy the libraries and application objects as described below for the compiled AddIn library.</li>
</ol>
<p>&nbsp;</p>
<h3>Following are the steps to use the Lync communication AddIn based on the compiled AddIn library</h3>
<ol>
<li>Unpack the solution to a directory on your computer.<br />&nbsp;</li>
<li>Identify the compiled output in the bin/Release directory of the project directory.<br />&nbsp;</li>
<li>Create a directory e.g. named &ldquo;Lync&rdquo; in the Client Add-Ins directory, typically &ldquo;C:\Program Files (x86)\Microsoft Dynamics NAV\70\RoleTailored Client\Add-ins\&rdquo; and copy the content from the output directory there.<br />&nbsp;</li>
<li>The redistributable library from the Lync SDK can also be delivered by installing the redistributable installation, which typically can be found in the following place:<br /> &ldquo;C:\Program Files (x86)\Microsoft Lync\SDK\Redist\LyncSdkRedist.msi&rdquo;<br />&nbsp;</li>
<li>Register the AddIn in the &ldquo;Client Add-In&rdquo; table with the following entry:&nbsp;</li>
</ol>
<table style="padding-left: 30px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="240" valign="top">
<p><b>Control Add-in Name</b></p>
</td>
<td width="176" valign="top">
<p><b>Public Key Token</b></p>
</td>
<td width="138" valign="top">
<p><b>Version</b></p>
</td>
</tr>
<tr>
<td width="240" valign="top">
<p>LyncCommunicationControlAddIn</p>
</td>
<td width="176" valign="top">
<p>48f3911b65e24838</p>
</td>
<td width="138" valign="top">
<p>7.0.0.0</p>
</td>
</tr>
</tbody>
</table>
<p></p>
<p>Finally import the &nbsp;integration objects in file LyncIntegrationObjects.fob.<br /> These sample app changes for the Lync Integration cover the following changes:</p>
<ul>
<li>Field 200 SipAddress is added to the Customer, Vendor, Contact &amp; Sales Header table.</li>
<li>The cards for Customer, Vendor, Contact and Sales Order get each a Lync communication field in the communication fasttab. Code on the page will aside to the SIP address initialize the control for search candidates from other fields.</li>
<li>The fact boxes for customer and vendor details also get a Lync communication field with a fact box styled rendering, such that the Lync communication is available through the details page on list places for customers and vendors.</li>
<li>The page for the Item Vendor Catalog gets also the Vendor details factbox</li>
</ul>
<p>&nbsp;</p>
<h3>The content of this package is composed of the <i>Sample code, Distributable code and Third Party Distribution</i> and the covered by the License Terms in file &ldquo;Lync Communication AddIn SDK License Terms.docx&rdquo;</h3>
<ul>
<li><i>Sample Code</i> are all files that are referenced by and including in the Visual Studio Solution <i>LyncCommunicationAddIn.sln</i></li>
<li><i>Distributable code</i> is the built library <i>LyncCommunicationAddIn.dll</i></li>
<li><i>Third Party Distribution</i>files are the redistributable files from the Lync SDK:
<ul>
<li>Microsoft.Lync.Controls.dll</li>
<li>Microsoft.Lync.Controls.Framework.dll</li>
<li>Microsoft.Lync.Model.dll</li>
<li>Microsoft.Lync.Utilities.dll</li>
<li>Microsoft.Office.Uc.dll</li>
<li>Microsoft.Lync.Controls.Framework.resources.dll (in any of the language subdirectories)</li>
<li>Microsoft.Lync.Controls.resources.dll (in any of the language subdirectories)</li>
</ul>
</li>
</ul>
<p>The redistributable library from the Lync SDK can also be delivered by installing the redistributable installation, which typically can be found in the following place:<br /> &ldquo;C:\Program Files (x86)\Microsoft Lync\SDK\Redist\LyncSdkRedist.msi&rdquo;</p>
<p><i>&nbsp;</i></p>
<p><span style="font-size: large; font-family: 'times new roman', times;"><em>Christian Abeln</em></span> <br /> Senior Program Manager <br /> Microsoft Dynamics NAV</p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio templates for NAV Add-Ins updated to support also Visual Studio 2012</title>
      <link>https://docs.microsoft.com/archive/blogs/cabeln/visual-studio-templates-for-nav-add-ins-updated-to-support-also-visual-studio-2012</link>
      <pubDate>Mon, 03 Sep 2012 07:08:00 GMT</pubDate>
      <dc:creator><![CDATA[cabeln]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cabeln/2012/09/03/visual-studio-templates-for-nav-add-ins-updated-to-support-also-visual-studio-2012/</guid>
      <description><![CDATA[Just a quick note: I have updated the templates for Visual Studio that help you to create the...]]></description>
      <content:encoded><![CDATA[<p>Just a quick note: I have updated the templates for Visual Studio that help you to create the skeleton code for Add-Ins with a view clicks. Now you can also use <a href="https://www.microsoft.com/visualstudio/11/" target="_blank">Microsoft Visual Studio 2012</a> <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/4024.wlEmoticon-smile_763B30F9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/4024.wlEmoticon_2D00_smile_5F00_763B30F9.png" />. Visual Studio 2012 is supported by this same template installation.</p>
<p>Please find the download here:</p>
<p>&nbsp;<a title="NAV 2013 Tool &ndash; Add-In templates for Visual Studio 2010 and Visual Studio 2012" href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/0081.DynamicsNAV2013ClientAddIns.vsix" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/0081.DynamicsNAV2013ClientAddIns.vsix">NAV 2013 Tool &ndash; Add-In templates for Visual Studio 2010 and Visual Studio 2012</a></p>
<p>&nbsp;</p>
<p>The express versions of Visual Studio unfortunately do not support those templates.</p>
<p>&nbsp;</p>
<p><span style="font-family: garamond;" face="Garamond"><span style="font-size: large;" size="5"><em>Christian Abeln</em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /></span></span>Senior Program Manager&nbsp;&nbsp;&nbsp; <br />Microsoft Dynamics NAV</p>]]></content:encoded>
    </item>
    <item>
      <title>Add-Ins in Dynamics NAV 2013 (2#3) – Add-in exposing custom API to C/AL</title>
      <link>https://docs.microsoft.com/archive/blogs/cabeln/add-ins-in-dynamics-nav-2013-23-add-in-exposing-custom-api-to-cal</link>
      <pubDate>Fri, 17 Aug 2012 00:00:00 GMT</pubDate>
      <dc:creator><![CDATA[cabeln]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cabeln/2012/08/17/add-ins-in-dynamics-nav-2013-23-add-in-exposing-custom-api-to-cal/</guid>
      <description><![CDATA[Introduction  Add-Ins in NAV 2009 where all about data binding a custom visual component through the...]]></description>
      <content:encoded><![CDATA[<h1>Introduction</h1>  <p>Add-Ins in NAV 2009 where all about data binding a custom visual component through the Source Expression of the field&#160; to a data source – a variable on a page or a field in a table. Data for a an add-in would be transferred when the page updates and changed values from the add-in would be transferred back and saved when the page saves data. The add-in could influence a little, by triggering the OnControlAddIn Trigger or requesting saving of data through the Site.</p>  <p>While these concepts lead the developer to a “document oriented” thinking (documents conforming to data models and possibly configuration models), it imposed also some limitations. It was not always easy (yet possible) to build a document communication model that allowed C&amp;AL to send small signals and requests to the add-in and request values. In any case it required always serialization of a object structure into a document and deserialization on the other side, in either direction.</p>  <p>In NAV 2013 we have introduced Custom Interfaces for client add-ins. These are basically select methods, properties and events that dynamically extend the C/AL programming interface of the respective field on the page. An Add-In developer simply declares any public Method or Property or Event of the Add-In class with the new Attribute [ApplicationVisible], and as soon as an Add-In get assigned to a page, the field has those Methods and Properties available, even through the Symbol Editor (F5). Events that have been equipped with the attribute above will be represented as new server side triggers in the C/AL code code written in those&#160; triggers will be called as soon as the Add-In calls the event on the client.</p>  <p>&#160;</p>  <h1>For the restless reader (“in a few words”)</h1>  <p><img style="float: left; display: inline;" title="GoldenCaller" border="0" alt="GoldenCaller" align="left" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cabeln/WindowsLiveWriter/AddInsfortheRoleTailoredclientpart1_7706/GoldenCaller_thumb.png" original-url="https://blogs.msdn.com/blogfiles/cabeln/WindowsLiveWriter/AddInsfortheRoleTailoredclientpart1_7706/GoldenCaller_thumb.png" width="134" height="134" />- Add-In developer can expose “custom interfaces” to C/AL : public methods, properties and events with the [ApplicationVisible] attribute.</p>  <p>- <em>Application Visible</em> methods and properties are available for C/AL code at design and runtime, provided the Add-In library can be found.</p>  <p>- <em>Application Visible</em> events will be represented as new triggers for the respective fields on the page</p>  <p>- The Lync communication Add-In is a sample that shows how to use this technology</p>  <p>- Soon: Download of the the Lync Add-In: I am working on making it possible to share that.</p>  <p>&#160;</p>  <p>&#160;</p>  <h1>A sample: Lync communication Add-In with custom interfaces</h1>  <p>An add-in for Lync communication is sample for how custom Add-In interfaces may be used custom interfaces for different purposes:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/4863.image_1F4E1F75.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/4863.image_5F00_1F4E1F75.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/1830.image_thumb_3C73C77F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/1830.image_5F00_thumb_5F00_3C73C77F.png" width="518" height="298" /></a></p>  <h4>This Lync communication Add-In shall support the following behaviors:</h4>  <ul>   <li>Consume a SIP address under which Lync client through its Lync server will try to identify a communication contact from the own or any federated directory of communication contacts.</li>    <li>Shows the presence of the communication contact - as far as available through federation</li>    <li>Provides UI entry points to any available communication channel and shows general communication contact information that can be pinned to the desktop</li>    <li>Allows the user to search for a communication contact</li> </ul>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/1830.image_7E973002.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/1830.image_5F00_7E973002.png"><img style="margin: 0px 0px 0px 50px; display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/5554.image_thumb_443BBA21.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/5554.image_5F00_thumb_5F00_443BBA21.png" width="341" height="221" /></a></p>  <ul>&#160; <li>Provides search suggestions as defined by C/AL code</li> </ul>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8267.image_22DC1485.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8267.image_5F00_22DC1485.png"><img style="margin: 0px 0px 0px 50px; display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/6014.image_thumb_2F69C1A1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/6014.image_5F00_thumb_5F00_2F69C1A1.png" width="444" height="193" /></a></p>  <ul>   <li>Has different appearances, like honoring the layout specifics for task pages and fact boxes</li> </ul>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/7103.image_4DD4028A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/7103.image_5F00_4DD4028A.png"><img style="margin: 0px 0px 0px 50px; display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/6521.image_thumb_5342732E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/6521.image_5F00_thumb_5F00_5342732E.png" width="363" height="200" /></a></p>  <h4>For this purpose we design the Add-In interface in the following way:</h4>  <ul>   <li>Use data binding with the Source Expression to receive the SIP address from the underlying field</li>    <li>Provide custom interfaces that allow the C/AL developer to set the display characteristics, also by a set of predefined styles (Option field like)</li> </ul>  <blockquote>   <pre class="csharpcode"><span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// Adjusts the control for usage in taskpage / factboxes</span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="rem">/// &lt;param name=&quot;context&quot;&gt;The context.&lt;/param&gt;</span>
[ApplicationVisible]
<span class="kwrd">public</span> <span class="kwrd">void</span> SetAddInControlContext(AddInControlContext context)
{
     ...
}
  </pre>
</blockquote>

<ul>
  <li>Provide a method to set a list of search candidates to the Add-In. This takes actually a .NSTR string collection as a parameter which will be created in C/AL code and passed over without the need for serialization.</li>
</ul>

<blockquote>
  <pre class="csharpcode"><span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// CAL method: sets the search candidates<br /></span><span class="rem">/// &lt;/summary&gt;<br /></span><span class="rem">/// &lt;param name=&quot;candidates&quot;&gt;The search candidates&lt;/param&gt;</span>
[ApplicationVisible]<br /><span class="kwrd">public</span> <span class="kwrd">void</span> SetSearchCandidates(StringCollection candidates)
{
      ...
}</pre>
</blockquote>

<ul>
  <li>Expose an event from the Add-In, where in the corresponding trigger it is save to initialize the Lync control Add-In. Please note the type of the Event: MethodInvoker. Typically event types in .NET like to use one parameter for the sender of the event. With Add-Ins this is not feasible, because it would be the client side instance of the Add-In – depending on what object the Add-In would send. When sending over this object in a client-server event, the call would internally involve serialization, which is not supported by must .NET types and must be prevented in order to be display target independent. C/AL shall have only access to the field and such the ApplicationVisible exposed elements of the interface.</li>
</ul>

<blockquote>
  <pre class="csharpcode"><span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// Event will be fired when the Add-In is ready for communication through its API</span>
<span class="rem">/// &lt;/summary&gt;</span>
[ApplicationVisible]
<span class="kwrd">public</span> <span class="kwrd">event</span> MethodInvoker AddInReady;
  </pre>
</blockquote>

<p>&#160;</p>

<h1>Relation of .NET interop and Custom interfaces of Add-Ins</h1>

<p>On the first glance writing C/AL with .NET interop objects and Add-Ins appears to be rather similar.&#160; But there are important differences:</p>

<ul>
  <li>While Add-Ins appear as if they</li>

  <li>One difference is that .Net interop objects are always instantiated with one of its constructors (or a factory method which call the constructor). Yet the instance of the Add-Ins (or it’s server side representation of the custom interface) is just there, as soon as the page has been fully created. Unfortunately there is not default place in code where the instance of the server side representation of the Add-In can be assumed to exit. Therefore for Add-Ins, where the server side use case typically requires a signal to now when the Add-In has been created on the client, the above suggested introduction of the AddInReady event is&#160; good solution.</li>
</ul>

<p>&#160;</p>

<h1>Structure of the Lync AddIn</h1>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/4113.image_70657F5C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/4113.image_5F00_70657F5C.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/0871.image_thumb_19F94A90.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/0871.image_5F00_thumb_5F00_19F94A90.png" width="310" height="146" /></a></p>

<p>The LyncCommunicationControl is a WPF composition of multiple controls from the Lync control SDK with customized templates and interactions.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/2548.image_18B4B1B1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/2548.image_5F00_18B4B1B1.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8802.image_thumb_2B1D0266.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8802.image_5F00_thumb_5F00_2B1D0266.png" width="845" height="474" /></a></p>

<p>The LyncCommunicationAddIn, the the router between NAV and the WPF control.</p>

<p>&#160;</p>

<h1>Typical Call flow with an AddIn with custom interfaces</h1>

<table style="width: 100%;" border="0" cellspacing="5" cellpadding="0"><tbody>
    <tr>
      <td valign="top" width="238"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/2844.AddIns-CallSequenceDiagram.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/2844.AddIns_2D00_CallSequenceDiagram.png" target="_blank"><img style="float: left; display: inline; background-image: none;" title="image" border="0" alt="image" align="left" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/0830.image4_40EF55A4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/0830.image4_5F00_40EF55A4.png" width="234" height="264" /></a></td>

      <td valign="top">In order to take care of the right sequence for initialization it a good idea to let an Add-in expose an event like AddInReady as shown in this sample and publish this with [ApplicationVisible]. The event shall be called as soon as the control has been given a parent. The ParentChanged event of the control can be used for this.</td>
    </tr>
  </tbody></table>

<p>&#160;</p>

<h1>What’s going to happen if …</h1>

<h4>What is going to happen if the Add-In has been changed in the interface since it had been used on a page ?</h4>

<p>It might be necessary to remove and reassign the Add-In to the field in order to have the code regenerated that interfaces with the&#160; Add-In custom interfaces. This is especially the case for C/AL Triggers that represent the custom events. Typically though a compilation error can be expected, until the interfacing C/AL code has been updated.</p>

<h4>What happens with the C/AL Code that interfaces with custom interfaces if the Add-In is removed from a field?</h4>

<p>If you remove an Add-In which has introduced Triggers for ApplicationVisible events, the a warning dialog will be shown in the development environment, indicating that those triggers together with the code that has been written in them will be deleted.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/0257.image_66C40D56.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/0257.image_5F00_66C40D56.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/7673.image_thumb_79D51435.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/7673.image_5F00_thumb_5F00_79D51435.png" width="488" height="220" /></a></p>

<h4>&#160;</h4>

<h4>What happens if a display target runs a page that does not support Add-Ins at all ?</h4>

<p>The Web Client of Dynamics NAV 2013 does not yet support Add-Ins. But what happens if a user runs still somehow opens such a page in the Web client?</p>

<p>A display target that does not support Add-Ins yet, (like the Web Client) will simply not at all show a field that has an Add-In assigned&#160; -as if this field was not visible. But if the C/AL code on the page calls into the custom interface of an Add-In the developers of the Add-In and the C/AL have to take special care:</p>

<p>E.g. by exposing an event like AddInReady from the Add-In which the Add-In will call as soon as it is ready to operate (e.g. after the control which he Add-In provides has been given a parent). In C/AL code in the corresponding AddInReady trigger would remember whether that trigger has been called, and otherwise not try to call into the Add-In custom interface. On a display target that does not&#160; support Add-Ins such trigger would never be called.</p>

<h1>&#160;</h1>

<h1>What’s next ?</h1>

<p>In the next blog post of this series I will take a closer look at the Sizing support for Add-In fields and present an update of the Registration and troubleshooting tools for Add-Ins.</p>

<p>&#160;</p>

<p><span style="font-family: garamond;" face="Garamond"><span style="font-size: large;" size="5"><em>Christian Abeln</em> 

      <br /></span></span>Senior Program Manager 

  <br />Microsoft Dynamics NAV</p>]]></content:encoded>
    </item>
    <item>
      <title>Quick Tip: Remember to check than an event is assigned before calling</title>
      <link>https://docs.microsoft.com/archive/blogs/cabeln/quick-tip-remember-to-check-than-an-event-is-assigned-before-calling</link>
      <pubDate>Wed, 18 Jul 2012 05:13:07 GMT</pubDate>
      <dc:creator><![CDATA[cabeln]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cabeln/2012/07/18/quick-tip-remember-to-check-than-an-event-is-assigned-before-calling/</guid>
      <description><![CDATA[&#160;  With NAV 2009 R2 The ControlAddIn event had been introduced. An Add-In can raise this event...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p>With NAV 2009 R2 The ControlAddIn event had been introduced. An Add-In can raise this event and the C/AL OnControlAddIn trigger will be called.</p>  <p>When you use the Add-In templates for Visual Studio and create an Add-In that supports this event you might want to remember to do a simple check whether the Event had been subscribed before calling it.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/6558.image_55526984.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/6558.image_5F00_55526984.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/6237.image_thumb_4A65626F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/6237.image_5F00_thumb_5F00_4A65626F.png" width="244" height="198" /></a>&#160;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/5621.image_7320C7B8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/5621.image_5F00_7320C7B8.png"><img style="margin: 0px; display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8357.image_thumb_6F52FD1B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8357.image_5F00_thumb_5F00_6F52FD1B.png" width="244" height="199" /></a></p>  <pre class="csharpcode">        <span class="kwrd">protected</span> <span class="kwrd">void</span> RaiseControlAddInEvent(<span class="kwrd">int</span> index, <span class="kwrd">string</span> data)
        {
            <span class="kwrd">if</span> (<span class="kwrd">this</span>.ControlAddIn != <span class="kwrd">null</span>)
            {
                <span class="kwrd">this</span>.ControlAddIn(index, data);
            }
        }

        <span class="kwrd">public</span> <span class="kwrd">event</span> ControlAddInEventHandler ControlAddIn;</pre>

<p></p>

<p>The method <em>RaiseControlAddInEvent</em> is a sample for this. It will be created when you use some of the Add-In templates for Visual Studio and is already part of some of the base classes for specialized Add-Ins – like the classe <em>StringControlAddInBase</em>.</p>

<p>And when we let an Add-In for Dynamics NAV 2013 expose custom events we will remember to use a similar approach for each individual exposed event!</p>

<p>&#160;</p>

<p>To understand the necessity for this, you should know that the client can decide to subscribe and unsubscribe from the exposed events any time, based on the initialization / de-initialization or other states of a page. The Add-In can simply check whether an event can be received &amp; processed by the client at any time by checking that it is asigned.</p>

<p>&#160;</p>

<p><img style="style" class="wlEmoticon wlEmoticon-thumbsup" alt="Thumbs up" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8838.wlEmoticon-thumbsup_73E907D5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8838.wlEmoticon_2D00_thumbsup_5F00_73E907D5.png" /> Thank you, Bert K. (Tectura) for pointing this out! This is certainly something to be aware&#160; of when creating Add-Ins. <img style="style" class="wlEmoticon wlEmoticon-thumbsup" alt="Thumbs up" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8838.wlEmoticon-thumbsup_73E907D5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8838.wlEmoticon_2D00_thumbsup_5F00_73E907D5.png" /></p>

<p>&#160;</p>

<p><span style="font-family: garamond;" face="Garamond"><span style="font-size: large;" size="5"><em>Christian Abeln</em>

      <br /></span></span>Senior Program Manager 

  <br />Microsoft Dynamics NAV</p>]]></content:encoded>
    </item>
    <item>
      <title>Add-Ins in Dynamics NAV 2013 (1#3) – Interfaces for data binding and the OnControlAddIn trigger</title>
      <link>https://docs.microsoft.com/archive/blogs/cabeln/add-ins-in-dynamics-nav-2013-13-interfaces-for-data-binding-and-the-oncontroladdin-trigger</link>
      <pubDate>Tue, 10 Jul 2012 14:00:00 GMT</pubDate>
      <dc:creator><![CDATA[cabeln]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cabeln/2012/07/10/add-ins-in-dynamics-nav-2013-13-interfaces-for-data-binding-and-the-oncontroladdin-trigger/</guid>
      <description><![CDATA[Introduction  With the arrival of Dynamics NAV 2013 later this year we will introduce a few...]]></description>
      <content:encoded><![CDATA[<h1>Introduction</h1>  <p>With the arrival of Dynamics NAV 2013 later this year we will introduce a few improvements on our Client Add-In story which we believe will be a great productivity improvement for partners who are in the business of creating and shipping Add-Ins as part of their solutions and projects.</p>  <p>The new additions are found in the following areas, which each will be covered in it’s own blog post:</p>  <ul>   <li>Data binding through the Source Expression to more data types (covered in this blog post)</li>    <li>Add-ins exposing custom interfaces to C/AL</li>    <li>Improved layout support, upgrade support, current limitations,</li> </ul>  <p>Along the way I will provide my updated Add-in tools – the new Visual Studio Templates, Add-In registration tools and we will experiment with some new samples.</p>  <p>&#160;</p>  <h1>For the restless reader (“in a few words”)</h1>  <p><img style="float: left; display: inline;" title="GoldenCaller" border="0" alt="GoldenCaller" align="left" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cabeln/WindowsLiveWriter/AddInsfortheRoleTailoredclientpart1_7706/GoldenCaller_thumb.png" original-url="https://blogs.msdn.com/blogfiles/cabeln/WindowsLiveWriter/AddInsfortheRoleTailoredclientpart1_7706/GoldenCaller_thumb.png" width="134" height="134" /><img class="wlEmoticon wlEmoticon-lightbulb" alt="Light bulb" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3884.wlEmoticon-lightbulb_4E1D90B4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3884.wlEmoticon_2D00_lightbulb_5F00_4E1D90B4.png" /> NAV 2013 support data binding for all CAL data types by mapping CAL data to one of the .NET data types: Object, string, Boolean, Char, DateTime, Decimal, Guid, Int32, Int64, TimeSpan</p>  <p><img class="wlEmoticon wlEmoticon-lightbulb" alt="Light bulb" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3884.wlEmoticon-lightbulb_4E1D90B4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3884.wlEmoticon_2D00_lightbulb_5F00_4E1D90B4.png" /> Data binding and firing of the OnControlAddIn C/AL trigger are enabled by implementing respective Interfaces.</p>  <p><img class="wlEmoticon wlEmoticon-lightbulb" alt="Light bulb" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3884.wlEmoticon-lightbulb_4E1D90B4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3884.wlEmoticon_2D00_lightbulb_5F00_4E1D90B4.png" /> A set of&#160; <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/1856.DynamicsNAV2013ClientAddIns.vsix" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/1856.DynamicsNAV2013ClientAddIns.vsix" target="_blank">new NAV 2013 templates for Visual Studio 2010</a> make it easy to create a Visual Studio project with add-ins with the selected binding and event support. (<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/7380.DynamicsNAV2009ClientAddIns.vsix" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78/7380.DynamicsNAV2009ClientAddIns.vsix" target="_blank">Find the templates for NAV 2009 here</a>)</p>  <p>&#160;</p>  <h1>Data binding and eventing basics</h1>  <p>Data binding with the SourceExpr of the field that holds the add-in has one great advantage: the data are transferred together with the other data on the page. You do not need to find the right place in C/AL triggers and write any code in order to exchange data with the add-in. The add-in will be updated automatically and changed data be saved like for all other fields.&#160; <br />(In a follow up post, I will talk about custom methods, properties and events exposed by the add-in in order to allow a very rich interaction on code level.)</p>  <p>Already in NAV 2009 R2 we had two interfaces to support data binding over the field’s source expression and eventing through the OnControlAddIn trigger in C/AL.</p>  <p><img class="wlEmoticon wlEmoticon-pointingup" alt="Pointing up" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/2783.wlEmoticon-pointingup_6DDA8D11.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/2783.wlEmoticon_2D00_pointingup_5F00_6DDA8D11.png" /> Please note:&#160; A valid add-in class is any class derived from the base class for the respective display target and optionally implements one or both of the interfaces <a href="https://msdn.microsoft.com/en-us/library/dd983778.aspx" target="_blank">IValueControlAddInDefinition&lt;T&gt;</a> and <a href="https://msdn.microsoft.com/en-us/library/microsoft.dynamics.framework.ui.extensibility.ieventcontroladdindefinition.aspx" target="_blank">IEventControlAddInDefinition</a>.</p>  <p>&#160;</p>  <p>The basic steps in the creation process of an add-in are:</p>  <ol>   <li>Use the base class for the display target – until now the WinForms based Windows RoleTailored client, which is the class <a href="https://msdn.microsoft.com/en-us/library/microsoft.dynamics.framework.ui.extensibility.winforms.winformscontroladdinbase.aspx" target="_blank">WinFormsControlAddInBase</a>.</li>    <li>Add and implement the interface <a name="OLE_LINK12"></a><a href="https://msdn.microsoft.com/en-us/library/dd983778.aspx" target="_blank">IValueControlAddInDefinition&lt;T&gt;</a> for T being one one of the supported .NET types, in order for your AddIn to be able to exchange the data which the hosting field has been conned to though the C/AL property SourceExpr.</li>    <li>Add and implement the interface <a href="https://msdn.microsoft.com/en-us/library/microsoft.dynamics.framework.ui.extensibility.ieventcontroladdindefinition.aspx" target="_blank">IEventControlAddInDefinition</a> if you like your AddIn to be able to fire the OnControlAddIn trigger in C/AL, which every field already has by default.</li> </ol>  <p><img class="wlEmoticon wlEmoticon-highfive" alt="High five" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3750.wlEmoticon-highfive_5EE3382A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3750.wlEmoticon_2D00_highfive_5F00_5EE3382A.png" /> The addition in NAV 2013 is that now the data binding can be cover all most C/AL data types, not just Text types and Blob. for this purpose the set of data types supported when you implement the interface <a href="https://msdn.microsoft.com/en-us/library/dd983778.aspx" target="_blank">IValueControlAddInDefinition&lt;T&gt;</a> has been increased to the following set of .NET data types: Object, string, Boolean, Char, Datetime, Decimal, Guid, Int32, Int64, Timespan</p>  <p>&#160;</p>  <p>But watch out! If you dare to use a data type not in that list, you may very well experience an error like the following at runtime, when you try to load the add-in:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3326.image_3A84C186.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3326.image_5F00_3A84C186.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3326.image_thumb_756BF44F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3326.image_5F00_thumb_5F00_756BF44F.png" width="362" height="99" /> </a></p>  <p>(Here I had created a class named ‘CooleKlasse’ and tried to use this when declaring the add-in class.)</p>  <p>In order to exchange a data for a data model maintained in a class over the Source Expression of a field, you should use an add-in that implements the interface <a name="OLE_LINK12"></a><a href="https://msdn.microsoft.com/en-us/library/dd983778.aspx" target="_blank">IValueControlAddInDefinition&lt;system.string&gt;</a>. Write a little code in C/AL and the add-in Value property getter / setter in order to serialize / de-serialize the data model to an from string.</p>  <p>&#160;</p>  <h1>Creating an add-in class with the Visual Studio 2010 templates for NAV 2013</h1>  <p>The Templates for Visual Studio 2010 and the new Add-In Builder make it very easy to create a basic AddIn class:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3365.image_1721AF43.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3365.image_5F00_1721AF43.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/6082.image_thumb_74113DD2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/6082.image_5F00_thumb_5F00_74113DD2.png" width="644" height="306" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/6683.image_3E4BD2AB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/6683.image_5F00_3E4BD2AB.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/7585.image_thumb_258C859B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/7585.image_5F00_thumb_5F00_258C859B.png" width="374" height="303" /></a>&#160; <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3343.image_3E3BACDE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3343.image_5F00_3E3BACDE.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8662.image_thumb_1E5D2356.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8662.image_5F00_thumb_5F00_1E5D2356.png" width="374" height="303" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/7563.image_01FFBB69.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/7563.image_5F00_01FFBB69.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/6505.image_thumb_34EF4BD0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/6505.image_5F00_thumb_5F00_34EF4BD0.png" width="739" height="508" /></a></p>  <h2>&#160;</h2>  <h1>Convenience interfaces in NAV 2013</h1>  <p>Already in NAV 2009 R2 we had introduced a number of convenience interface and classes which combine above for typical use cases.</p>  <p><img class="wlEmoticon wlEmoticon-highfive" alt="High five" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3750.wlEmoticon-highfive_5EE3382A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3750.wlEmoticon_2D00_highfive_5F00_5EE3382A.png" /> In NAV 2013 though we have completed the set C/AL data types an add-in bind to. For that purpose the below list of interfaces are ready to use in order to create an add-in that supports firing the OnControlAddIn trigger <strong>as well as</strong> binding from a C/AL data type to a corresponding .NET data type in the add-in code.</p>  <table border="1" cellspacing="0" cellpadding="0" width="100%"><tbody>     <tr>       <td valign="top" width="189">         <p><b>Interface</b></p>       </td>        <td valign="top" width="646">         <p><b>Use</b></p>       </td>     </tr>      <tr>       <td valign="top" width="192">         <p>IObjectControlAddInDefinition</p>       </td>        <td valign="top" width="646">         <p>Event support and data binding with type <strong>System.Object</strong> maps to binary <strong>C/AL BLOB</strong> data</p>       </td>     </tr>      <tr>       <td valign="top" width="194">         <p>IStringControl­AddInDefinition</p>       </td>        <td valign="top" width="646">         <p>Event support and data binding with type <strong>System.String</strong> maps well to <strong>C/AL string types</strong>.</p>          <p><img class="wlEmoticon wlEmoticon-lightbulb" alt="Light bulb" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3884.wlEmoticon-lightbulb_4E1D90B4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3884.wlEmoticon_2D00_lightbulb_5F00_4E1D90B4.png" />also the Windows Forms add-in base class <strong>StringControlAddInBase</strong> implements this interface.</p>       </td>     </tr>      <tr>       <td valign="top" width="196">         <p>IBooleanControlAddInDefinition</p>       </td>        <td valign="top" width="646">         <p>Event support and data binding with type <strong>System.Boolean</strong> maps well to binary <strong>C/AL Boolean</strong> data</p>       </td>     </tr>      <tr>       <td valign="top" width="198">         <p>IByteControlAddInDefinition</p>       </td>        <td valign="top" width="646">         <p>Event support and data binding with type <strong>System.Byte</strong> maps well to binary <strong>C/AL Byte</strong> data</p>       </td>     </tr>      <tr>       <td valign="top" width="200">         <p>ICharControlAddInDefinition</p>       </td>        <td valign="top" width="646">         <p>Event support and data binding with type <strong>System.Char</strong> maps well to binary <strong>C/AL Char</strong> data. Please note: with NAV 2013 this is a Unicode character type.</p>       </td>     </tr>      <tr>       <td valign="top" width="202">         <p>IDateTimeControlAddInDefinition</p>       </td>        <td valign="top" width="646">         <p>Event support and data binding with type <strong>System.DateTime</strong> maps well to binary <strong>C/AL DateTime</strong> data</p>       </td>     </tr>      <tr>       <td valign="top" width="204">         <p>IDecimalControlAddInDefinition</p>       </td>        <td valign="top" width="646">         <p>Event support and data binding with type <strong>System.Decimal</strong> maps well to binary <strong>C/AL Decimal</strong> data</p>       </td>     </tr>      <tr>       <td valign="top" width="205">         <p>IGuidControlAddInDefinition</p>       </td>        <td valign="top" width="646">         <p>Event support and data binding with type<strong> System.Guid</strong> maps well to binary <strong>C/AL Guid</strong> data</p>       </td>     </tr>      <tr>       <td valign="top" width="206">         <p>IInt32ControlAddInDefinition</p>       </td>        <td valign="top" width="646">         <p>Event support and data binding with type <strong>System.Int32 </strong>maps well to binary <strong>C/AL Integer </strong>data</p>       </td>     </tr>      <tr>       <td valign="top" width="207">         <p>IInt64ControlAddInDefinition</p>       </td>        <td valign="top" width="646">         <p>Event support and data binding with type <strong>System.Int64 </strong>maps well to binary <strong>C/AL BigInteger</strong> data</p>       </td>     </tr>      <tr>       <td valign="top" width="208">         <p>ITimeSpanControlAddInDefinition</p>       </td>        <td valign="top" width="646">         <p>Event support and data binding with type <strong>System.TimeSpan </strong>maps well to binary <strong>C/AL Duration </strong>data</p>       </td>     </tr>   </tbody></table>  <p>These interfaces make it little easier to declare a Control add-in, that is fully supported by NAV 2013.</p>  <p>If you utilize the Visual Studio templates and select both support for the OnControlAddIn trigger and data binding, the template wizard will be smart enough to pick the right interface.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/5025.image_3DFBD751.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/5025.image_5F00_3DFBD751.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/0825.image_thumb_330ED03C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/0825.image_5F00_thumb_5F00_330ED03C.png" width="374" height="303" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8168.image_4FC84551.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8168.image_5F00_4FC84551.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8171.image_thumb_3C3AE5B0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8171.image_5F00_thumb_5F00_3C3AE5B0.png" width="705" height="181" /></a></p>  <p>&#160;</p>  <h1>Further steps</h1>  <p>In order to return the control instance to the Windows RoleTailored client you will implement the method <a href="https://msdn.microsoft.com/en-us/library/microsoft.dynamics.framework.ui.extensibility.winforms.winformscontroladdinbase.createcontrol" target="_blank">CreateControl</a>, like in your add-ins for NAV 2009 R2.</p>  <p>In order to have the add-in respect the settings of the field context you will need to override the methods like OnCaptionChanged from the <a href="https://msdn.microsoft.com/en-us/library/microsoft.dynamics.framework.ui.extensibility.winforms.winformscontroladdinbase.aspx" target="_blank">WinFormsControlAddInBase</a>. Again no changes here compared to developing add-ins for NAV 2009 R2.</p>  <p>For the control of the size you had in NAV 2009 R2 make the control to return a proper <a href="https://msdn.microsoft.com/en-us/library/system.windows.forms.control.minimumsize.aspx" target="_blank">MinimumSize</a>, <a href="https://msdn.microsoft.com/en-us/library/system.windows.forms.control.maximumsize.aspx" target="_blank">MaximumSize</a> and <a href="https://msdn.microsoft.com/en-us/library/system.windows.forms.control.preferredsize.aspx" target="_blank">PreferredSize</a> and would sometimes also set the Dock property of the control. In NAV 2013 we have introduced the <a href="https://msdn.microsoft.com/en-us/library/microsoft.dynamics.framework.ui.extensibility.winforms.winformscontroladdinbase.applysize(v=nav.70).aspx" target="_blank">ApplySize</a> method, which allows you to define the default sizing behavior on the add-in class. I will describe this in a follow up post, as well as the most interesting topic: custom interfaces exposed by add-ins to C/AL code.</p>  <p>&#160;</p>  <p><span style="font-family: garamond;" face="Garamond"><span style="font-size: large;" size="5"><em>Christian Abeln</em>        <br /></span></span>Senior Program Manager     <br />Microsoft Dynamics NAV</p>]]></content:encoded>
    </item>
    <item>
      <title>Add-Ins in Dynamics NAV 2013 - Loading of NAV R2 AddIns in NAV 2013</title>
      <link>https://docs.microsoft.com/archive/blogs/cabeln/add-ins-in-dynamics-nav-2013-loading-of-nav-r2-addins-in-nav-2013</link>
      <pubDate>Tue, 10 Jul 2012 05:57:41 GMT</pubDate>
      <dc:creator><![CDATA[cabeln]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cabeln/2012/07/10/add-ins-in-dynamics-nav-2013-loading-of-nav-r2-addins-in-nav-2013/</guid>
      <description><![CDATA[Dynamics NAV 2013 appears at the horizon. Selected partners have received already many builds and a...]]></description>
      <content:encoded><![CDATA[<p>Dynamics NAV 2013 appears at the horizon. Selected partners have received already many builds and a Beta <a href="https://blogs.msdn.com/b/nav/archive/2012/05/16/microsoft-dynamics-nav-2013-beta-released-for-partners.aspx" target="_blank">has been released to partners</a>. There are going to be some really powerful new capabilities available in NAV 2013, which I will blog about in the near future. But let’s start with one piece of information: How to use AddIns from NAV 2009 R2 in NAV 2013.</p>  <p>&#160;</p>  <p>From the first design of AddIns for NAV R2 we had taken care of the fact that AddIns that have been built for R2 (DataBinding with Text, BigText or Blob) and the OnControladdIn trigger we had planned that AddIns built for a previous version would also load in the next versions of NAV. From the internal interface and implementation perspective this also supported in the design.</p>  <p>The only remaining tweak to make this work is to tell the .NET system that it is shall load AddIns built for R2 and bind them against the newer versions of the libraries Microsoft.Dynamics.Framework.UI.Extensibility and Microsoft.Dynamics.Framework.UI.WinForms.Controls. This is done by a configuration entry in the config file for the Role Tailored client (Microsoft.Dynamics.Nav.Client.exe.config):</p>  <pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">runtime</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">assemblyBinding</span> <span class="attr">xmlns</span><span class="kwrd">=&quot;urn:schemas-microsoft-com:asm.v1&quot;</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">dependentAssembly</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">assemblyIdentity</span> <span class="attr">name</span><span class="kwrd">=&quot;Microsoft.Dynamics.Framework.UI.Extensibility&quot;</span> <br />                        <span class="attr">publicKeyToken</span><span class="kwrd">=&quot;31bf3856ad364e35&quot;</span> <span class="attr">culture</span><span class="kwrd">=&quot;neutral&quot;</span><span class="kwrd">/&gt;</span>  
      <span class="kwrd">&lt;</span><span class="html">bindingRedirect</span> <span class="attr">oldVersion</span><span class="kwrd">=&quot;0.0.0.0-6.9.9.9&quot;</span> <span class="attr">newVersion</span><span class="kwrd">=&quot;7.0.0.0&quot;</span><span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">dependentAssembly</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">dependentAssembly</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">assemblyIdentity</span> <span class="attr">name</span><span class="kwrd">=&quot;Microsoft.Dynamics.Framework.UI.WinForms.Controls&quot;<br />                        </span><span class="attr">publicKeyToken</span><span class="kwrd">=&quot;31bf3856ad364e35&quot;</span> <span class="attr">culture</span><span class="kwrd">=&quot;neutral&quot;</span><span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">bindingRedirect</span> <span class="attr">oldVersion</span><span class="kwrd">=&quot;0.0.0.0-1.4.9.9&quot;</span> <span class="attr">newVersion</span><span class="kwrd">=&quot;1.5.0.0&quot;</span><span class="kwrd">/&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">dependentAssembly</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">assemblyBinding</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">runtime</span><span class="kwrd">&gt;</span></pre>

<pre class="csharpcode"> </pre>

<p>This configuration will instruct the .NET runtime to use the version 7.0 of the Extensibility assembly if a library that gets loaded has been compiled against an earlier version. The same for the version 1.5 of the WinForms.Controls assembly which is needed indirectly too.</p>

<p><img style="style" class="wlEmoticon wlEmoticon-lightbulb" alt="Light bulb" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3324.wlEmoticon-lightbulb_23FB8280.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3324.wlEmoticon_2D00_lightbulb_5F00_23FB8280.png" />Please note: In released NAV 2013 this settings will probably ship in the standard configuration file.</p>

<p>But in order to allow the page previewer in NAV 2013 development environment also to show R2 AddIns and to allow .NET interop components from the same AddIn assembly to be used in the NAV development environment and on the server at runtime, you will need to ad the same settings to the respective config files for finsqle.exe and the service executable Microsoft.Dynamics.Nav.Server.exe. </p>

<p><img style="style" class="wlEmoticon wlEmoticon-lightbulb" alt="Light bulb" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3324.wlEmoticon-lightbulb_23FB8280.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3324.wlEmoticon_2D00_lightbulb_5F00_23FB8280.png" /> While in general it is a good idea to use of serializable .NET interop objects for data models for communication with more complex AddIns, like business data visualizations, I strongly suggest to not blend those data model objects into the AddIn assembly but keep them as separate assemblies without any dependencies to NAV product libraries.</p>

<p>&#160;</p>

<p><font face="Garamond"><font size="5"><em>Christian Abeln</em>

      <br /></font></font>Senior Program Manager 

  <br />Microsoft Dynamics NAV</p>]]></content:encoded>
    </item>
    <item>
      <title>Timeline Business Data Visualization in Inventory Projection for DynamicsNAV 2009 R2</title>
      <link>https://docs.microsoft.com/archive/blogs/cabeln/timeline-business-data-visualization-in-inventory-projection-for-dynamicsnav-2009-r2</link>
      <pubDate>Tue, 31 May 2011 09:53:00 GMT</pubDate>
      <dc:creator><![CDATA[cabeln]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cabeln/2011/05/31/timeline-business-data-visualization-in-inventory-projection-for-dynamicsnav-2009-r2/</guid>
      <description><![CDATA[&nbsp;
Just have released a new improved release of the Timeline visualization for DynamicsNAV...]]></description>
      <content:encoded><![CDATA[<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cabeln/WindowsLiveWriter/AddInsfortheRoleTailoredclientpart1_7706/GoldenCaller_2.png" original-url="https://blogs.msdn.com/blogfiles/cabeln/WindowsLiveWriter/AddInsfortheRoleTailoredclientpart1_7706/GoldenCaller_2.png"><img height="134" width="134" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cabeln/WindowsLiveWriter/AddInsfortheRoleTailoredclientpart1_7706/GoldenCaller_thumb.png" original-url="https://blogs.msdn.com/blogfiles/cabeln/WindowsLiveWriter/AddInsfortheRoleTailoredclientpart1_7706/GoldenCaller_thumb.png" align="left" alt="GoldenCaller" border="0" title="GoldenCaller" style="display: inline; float: left;" /></a></p>
<p>&nbsp;</p>
<p>Just have released a new improved release of the Timeline visualization for DynamicsNAV 2009 R2 <br />on <a href="https://mbs.microsoft.com/partnersource/deployment/resources/productreleases/BusinessDataVisualization_NAV2009">Partner Source</a> and <a href="https://mbs.microsoft.com/customersource/downloads/servicepacks/BusinessDataVisualization_NAV2009">Customer Source</a>!</p>
<p><br clear="all" /></p>
<p>It is already a while ago since <a href="https://blogs.msdn.com/b/nav/archive/2010/12/15/microsoft-dynamics-nav-2009-r2-ships.aspx">Microsoft DynamicsNAV R2 has shipped</a>. On the DVD image there two Business Data Visualizations shipping: The <a href="https://blogs.msdn.com/b/cabeln/archive/2009/12/05/announcement-treemap-business-data-visualization-available-on-partnersource-and-customersource.aspx">Treemap visualization</a> and this now updated Timeline visualization. The latter can be used for example to visualize the projected inventory of an item over time.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8371.image_6D8649E0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8371.image_5F00_6D8649E0.png"><img height="395" width="850" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/5657.image_thumb_0A9BCC1E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/5657.image_5F00_thumb_5F00_0A9BCC1E.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /></a></p>
<p>This visualizations shows the inventory level for one item / variant over time and lets the user compare scenarios of the core transactions only, taking into account forecast and changes suggested by the planning engine (&ldquo;Action messages&rdquo;) or the planner himself. The user can edit in the latter scenario and apply his own changes to supply transactions interactively in the chart: He drags data points to change supply quantity or moves them in time to suggest a rescheduling action. <br />Changes are transmitted back to app code and can be processed, validated and applied or rejected. <br />Further interactivity options cover zooming, scrolling, creation &amp; deletion of supply, reverting of supply changes and automating adjustment for individual supply to balance the inventory until the next planned supply.</p>
<h2>What is new in this update:</h2>
<table width="571" cellpadding="0" cellspacing="0" border="0" style="width: 571px; height: 148px;">
<tbody>
<tr>
<td width="130" valign="top"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/2577.image_4FDF1C56.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/2577.image_5F00_4FDF1C56.png"><br /><img height="112" width="95" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/1016.image_thumb_4370F92D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/1016.image_5F00_thumb_5F00_4370F92D.png" align="left" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;" /></a></td>
<td width="394" valign="top">
<p><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3073.wlEmoticon-smile_6651BADD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3073.wlEmoticon_2D00_smile_5F00_6651BADD.png" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-style: none;" /> Precision for the measure <br /><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3073.wlEmoticon-smile_6651BADD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3073.wlEmoticon_2D00_smile_5F00_6651BADD.png" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-style: none;" /> Render a unit of measure <br /><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3073.wlEmoticon-smile_6651BADD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3073.wlEmoticon_2D00_smile_5F00_6651BADD.png" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-style: none;" /> API control for which of the three scenarios to show <br /><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3073.wlEmoticon-smile_6651BADD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3073.wlEmoticon_2D00_smile_5F00_6651BADD.png" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-style: none;" /> In place description label for selected point <br /><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3073.wlEmoticon-smile_6651BADD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3073.wlEmoticon_2D00_smile_5F00_6651BADD.png" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-style: none;" /> Tab order based selection of movable points <br /><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3073.wlEmoticon-smile_6651BADD.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3073.wlEmoticon_2D00_smile_5F00_6651BADD.png" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-style: none;" /> Keyboard control for moving of point (Shift+Arrow key) </p>
</td>
<td width="135" valign="top">
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3835.image_7B832F83.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3835.image_5F00_7B832F83.png"><img height="146" width="100" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/2364.image_thumb_2516FAB7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/2364.image_5F00_thumb_5F00_2516FAB7.png" align="right" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" /></a></p>
</td>
</tr>
</tbody>
</table>
<h2>The Add-in API</h2>
<p>In earlier releases this visualization was communicating over XML ports with the business logic to get and modify the transactions and the rows in the planning journal. This communication has been replaced with a more robust .Net interop object, which the visualization provides to the business logic. This removes certain encoding problems that might have been observed before. This object is actually great to walk through the features of the visualization Add-in:</p>
<p>It is the <span style="font-family: Courier New;">TransactionDataDocument</span> which is exposed by the Add-in assembly itself:&nbsp; <span style="font-family: Courier New;">Microsoft.Dynamics.Visualizations.InteractiveTimeline.AddIn.TransactionDataDocument.</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/8780.TransactionDataDocument-ClassDiagram5_5CE93EDA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/8780.TransactionDataDocument_2D00_ClassDiagram5_5F00_5CE93EDA.png"><img height="391" width="268" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/3426.TransactionDataDocument-ClassDiagram5_thumb_22219604.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/3426.TransactionDataDocument_2D00_ClassDiagram5_5F00_thumb_5F00_22219604.png" align="left" alt="TransactionDataDocument-ClassDiagram[5]" border="0" title="TransactionDataDocument-ClassDiagram[5]" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" /></a></p>
<p>&nbsp;</p>
<p>An instance of this document class is instantiated, populated and serialized by the business logic, in order to compose the data document that the visualization Add-In need to receive over the data binding of the respective field&rsquo;s source expression .</p>
<h3><br clear="all" />Add-in API: Properties</h3>
<p>If we look at the Interface find the following properties that C/AL business logic may set:</p>
<table width="596" cellpadding="0" cellspacing="0" border="0" style="width: 596px; height: 263px;">
<tbody>
<tr>
<td width="254" valign="top"><span style="font-family: Courier New;">ItemName</span></td>
<td width="560" valign="top">Name of the Item in the above example: &ldquo;Bicycle&rdquo;</td>
</tr>
<tr>
<td width="254" valign="top"><span style="font-family: Courier New;">LegendSeriesTitle1..3</span></td>
<td width="560" valign="top">Label of the three scenario checkboxes </td>
</tr>
<tr>
<td width="254" valign="top"><span style="font-family: Courier New;">MinAutoAdjustLevel</span></td>
<td width="560" valign="top">The minimum level which the &rdquo;Auto Adjust&rdquo; tool takes into account </td>
</tr>
<tr>
<td width="254" valign="top"><span style="font-family: Courier New;">SpecialDates</span></td>
<td width="560" valign="top">Table of dates which are highlighted and labeled in the background of the visualization</td>
</tr>
<tr>
<td width="254" valign="top"><span style="font-family: Courier New;">SpecialValues</span></td>
<td width="560" valign="top">Table of constant values which are drawn as colored horizontal lines with label attached</td>
</tr>
<tr>
<td width="254" valign="top"><span style="font-family: Courier New;">Title</span></td>
<td width="560" valign="top">Text label in front of the Item name, e.g.: &ldquo;Projected Inventory&rdquo;</td>
</tr>
<tr>
<td width="254" valign="top"><span style="font-family: Courier New;">Transactions</span></td>
<td width="560" valign="top">List of transaction of different type, amounts , dates, description and other attributes. </td>
</tr>
<tr>
<td width="254" valign="top"><span style="font-family: Courier New;">TransactionPrecision</span></td>
<td width="560" valign="top">Precision of the measure / Y-Axis, e.g. 2 for rendering of &ldquo;1.123,45 kg&rdquo;</td>
</tr>
<tr>
<td width="254" valign="top"><span style="font-family: Courier New;">TransactionSupport</span></td>
<td width="560" valign="top">Value that indicate which of the three scenarios to show <br />CoreTransactions = 1 <br />CoreTransactionsWithForecast = 2 <br />CoreTransactionsWithForecastAndAdjustments = 4</td>
</tr>
<tr>
<td width="254" valign="top"><span style="font-family: Courier New;">TransactionUnitOfMeasure</span></td>
<td width="560" valign="top">The unit of measure that is rendered with the transaction amount, e.g. &ldquo;kg&rdquo;. </td>
</tr>
<tr>
<td width="254" valign="top"><span style="font-family: Courier New;">Uniqueness</span></td>
<td width="560" valign="top">Value set by business logic to indicate that a new document has been set, even if it contains the same content. </td>
</tr>
</tbody>
</table>
<h3>Add-in API: Methods</h3>
<p>And&nbsp;we have the following methods for the application developer:</p>
<p><span style="font-family: Courier New;">AddSpecialValue (decimal value, string title, Color color)</span>: <br />Adds a constant value which is drawn as colored horizontal lines with label attached.</p>
<p><span style="font-family: Courier New;">AddSpecialDate (DateTime date, string title) <br /></span><span style="font-family: Segoe UI;">Adds a date which is highlighted and labeled in the background of the visualization.</span></p>
<p><span style="font-family: Courier New;">Serialize()</span> <br />Serializes the document into XML, which will be used to fill the document variable for databinding.</p>
<h3>Add-in API: Triggers</h3>
<p>The visualization sends also the following <span style="font-family: Courier New;">OnControlAddIn</span> trigger events to the business logic :</p>
<table width="616" cellpadding="0" cellspacing="0" border="0" style="width: 616px; height: 116px;">
<tbody>
<tr>
<td width="269" valign="top">DataChanged = 100</td>
<td width="531" valign="top">The data parameter is a xml serialized <span style="font-family: Courier New;">TransactionChangesDataDocument</span> that contains all transaction modifications, since before planning.</td>
</tr>
<tr>
<td width="269" valign="top">SelectedPointChanged = 101</td>
<td width="531" valign="top">When a transaction point has been selected. The data parameter references the transaction.</td>
</tr>
<tr>
<td width="269" valign="top">DataPointActivated = 102</td>
<td width="531" valign="top">When a transaction point has been activated (Enter, double click). The data parameter references the transaction.</td>
</tr>
<tr>
<td width="269" valign="top">CommandProcessingComplete = 999</td>
<td width="531" valign="top">Sent whenever a command document has been processed, such that business logic may reset the document data to prevent multiple execution.</td>
</tr>
</tbody>
</table>
<h3>&nbsp;Add-in API: Xml commands</h3>
<p>The visualization supports the following XML commands which can be sent through data binding. The purpose of these command is to give the business application developer similar modification control like the end user has. This comes handy for example, when the user can alternatively edit transaction changes in a list, and the business application developer wants to synchronize the visualization without sending over a complete transaction document.</p>
<table width="643" cellpadding="0" cellspacing="0" border="0" style="width: 643px; height: 213px;">
<tbody>
<tr>
<td width="273" valign="top">Clear = @"clear"</td>
<td width="527" valign="top">Command that tells the visualization to clear all data. <br />No parameter used.</td>
</tr>
<tr>
<td width="273" valign="top">Delete = @"delete"</td>
<td width="527" valign="top">Command that tells the visualization to delete a data point. <br />Parameter: RefNo of the data point.</td>
</tr>
<tr>
<td width="273" valign="top">Reschedule = @"reschedule"</td>
<td width="527" valign="top">Command that tells the visualization to reschedule a data point. <br />Parameter: RefNo of the data point. <br />Parameter: New date.</td>
</tr>
<tr>
<td width="273" valign="top">RevertChanges = @"revertchanges&rdquo;</td>
<td width="527" valign="top">Command that tells the visualization to reschedule a data point. <br />Parameter: RefNo of the data point. <br />Parameter: New date.</td>
</tr>
<tr>
<td width="273" valign="top">ChangeQuantity = @"changequantity"</td>
<td width="527" valign="top">Command that tells the visualization to change a data point's amount. <br />Parameter: RefNo of the data point. <br />Parameter: New amount.</td>
</tr>
<tr>
<td width="273" valign="top">SetCurrent = @"setcurrent"</td>
<td width="527" valign="top">Command that tells the visualization to set the Current data point. <br />Parameter: RefNo of the data point.</td>
</tr>
</tbody>
</table>
<p>&nbsp; </p>
<p>If you want to find a good example on how this API can be used from business application code, I suggest you study the application objects that come with the Add-In. They implement the visualization in and End 2 End scenario for Projected Item Availability monitoring.</p>
<p><img height="50" width="42" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/cabeln/WindowsLiveWriter/AddInsfortheRoleTailoredclientpart1_7706/Idea_thumb.png" original-url="https://blogs.msdn.com/blogfiles/cabeln/WindowsLiveWriter/AddInsfortheRoleTailoredclientpart1_7706/Idea_thumb.png" align="left" alt="Idea" hspace="10" border="0" title="Idea" /></p>
<p>&nbsp;</p>
<p>Important: You need to install one of the recent hofixes for DynamicsNAV 2009 R2 / SP1, in order to get the integration code working. Some updates to the .NET interop from the Hotfix builds is required. (The necessary hotfix has been applied in KB 2492239, which was released in March 2011 and comes with the NAV build number: 6.0.32146.)</p>
<p><br /><em><span style="font-family: Garamond; font-size: x-large;">Christian Abeln</span></em> <br />Senior Program Manager <br />Microsoft Dynamics NAV</p>]]></content:encoded>
    </item>
    <item>
      <title>Hands On Lab at Directions EMEA on Add-ins for the Role Tailored client</title>
      <link>https://docs.microsoft.com/archive/blogs/cabeln/hands-on-lab-at-directions-emea-on-add-ins-for-the-role-tailored-client</link>
      <pubDate>Mon, 09 May 2011 07:05:00 GMT</pubDate>
      <dc:creator><![CDATA[cabeln]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/cabeln/2011/05/09/hands-on-lab-at-directions-emea-on-add-ins-for-the-role-tailored-client/</guid>
      <description><![CDATA[If you are attending Directions EMEA 2011 in Berlin and you want to try out creating some cool...]]></description>
      <content:encoded><![CDATA[<p>If you are attending <a href="https://www.directionsemea.com/">Directions EMEA 2011</a> in Berlin and you want to try out creating some cool Add-ins for the RoleTailored client, then you should certainly join the <a href="https://www.directionsemea.com/index.php?option=com_content&amp;task=view&amp;id=79&amp;Itemid=65&amp;head=">Hands On Lab TRN3</a> on <a href="https://www.directionsemea.com/index.php?option=com_content&amp;task=view&amp;id=69&amp;Itemid=53&amp;head=">Wednesday afternoon</a> about Add-ins for the RoleTailored client!</p>
<p>If you want to experiment with the creation of an interactive control Add-in that visualizes and can change a state of an entity on a task page, the attend!</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/0143.image_6E43D56C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/0143.image_5F00_6E43D56C.png"><img height="71" width="378" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/6404.image_thumb_3E590DDE.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/6404.image_5F00_thumb_5F00_3E590DDE.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /></a></p>
<p>&nbsp;</p>
<p>If you want to experiment with easy charts integrated with your custom application code, then attend!</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/0636.image_67ECD911.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/0636.image_5F00_67ECD911.png"><img height="358" width="240" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/21/78/metablogapi/1526.image_thumb_6C16B0D6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-21-78-metablogapi/1526.image_5F00_thumb_5F00_6C16B0D6.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /></a></p>
<p>We have actually rewritten the whole Hand On Lab, to make it easier to follow. We use the <a href="https://blogs.msdn.com/b/cabeln/archive/2011/05/09/visual-studio-2010-templates-for-roletailored-client-add-ins.aspx">Add-in templates</a> and have some control code ready for you, which you even can take home &ndash; if you like.</p>
<p>See you at Directions EMEA 2011!!</p>
<p><span style="font-size: large;"><span style="font-family: Times New Roman;"><span style="color: #0000ff;"><em>Christian Abeln</em> <br /></span></span></span><span style="color: #008080; font-size: x-small;">Senior Program Manager <br />Microsoft Dynamics NAV</span></p>]]></content:encoded>
    </item>
  </channel>
</rss>