(D100) Client Extensibility in Microsoft Dynamics NAV 2009 R2 and beyond ... Christian Abeln, Christian.Abeln@Microsoft.com Session Content • Intro RTC Add-Ins • Basic concepts and tools needed. • The AddIn API and best pratice design. • Add-ins in NAV V7 • Whats new in the Add-In API • Custom interfaces (e.g. Timeline Visualization in V7) • CAL driven charts Use of RTC AddIns in R2 and beyond ... Business data & processes Monitor Query O-Data Client Extensibility Interop Async, Performance Managed data layer Dev tools ... A sample: Lync communication AddIn NAV R2 Extension Models Database Tier Service Tier Client Tier Client Add-In Role Tailored Client Form Builder .NET interop Data Binder Web Services Client Services Application Meta data provider .NET interop Class Library Microsoft SQL Server Client COM X X Server COM Three steps when using Add-ins Copy Add-in Register Page design Your solution Using Add-ins in the RTC 1. Place Add-in assembly in the ”Add-ins” folder(s) 2. Register the Add-in Registration Tool blogs.msdn.com/cabeln Using Add-ins in the R2 RTC 3. -> Select Add-in in Page Designer -> ‘Document’ based communication -> Add-In in trigger ”OnControlAddIn” Making of Control Add-Ins 1. Microsoft Visual Studio optionally : Visual Studio Templates for Add-ins blogs.msdn.com/cabeln 2. Extensibility assembly (Microsoft.Dynamics.Framework.UI.Extensibility) 3. Existing or new control Three steps when creating Add-ins Add-in class Create control Data & Events Your Add-in Add-in API: Concept • Choose a base class based on your reqiurements • Choose unique Add-in Name (Attribute) • Create the control • Implement interfaces for Value and Event binding as needed • Use ‘context’ information from the ‘Site’: Caption, Editable, Enabled, Style, ValidationResults , Visible Let’s create a Document Viewer Add-in Step By Step walk-through to create and integrate a Document Viewer Add-in. Inside the Add-In API Add-in base class library Add-in base class with string data binding & eventing -> Value, HasValueChanged, RaiseControlAddInEvent Control by default connected over framework property Control.Text ! Inside the Add-In API Add-in base class library • Add-in base class for static controls (no data binding, eventing) • Handles changes of Editable, Enabled, Visible, Style • AllowCaptionControl Inside the Add-In API Add-in base class library Inside the Add-In API Add-in base class library The best way to use the API ? A ViewModel based Add-in project ViewModel: How to show ViewModel: How to show Client Add-In Application Viewdata: What to show Viewdata: What to show Visualization Control RoleTailored client Service Tier XML Web Services Client Services Application Meta data provider .NET interop Class Library Client AddIn Client Tier Service Tier A ViewModel based Add-in project Role Tailored Client Form Builder .NET interop Data Binder Create an Add-in from scratch XML binding WPF Add-in Step By Step walk-through: Creating a WPF Chart Addin for Dynamics NAV from scratch. Custom interfaces: Timeline Viz V7: Add-ins with .NET 4.0 Charting in V7 V7: Chart Add-In for CAL developers Chart Add-In for CAL developers