Review:Microsoft Dynamics NAV 2009 Application Design written by Mark Brummel

If you are NAVving or about to NAV, reading this book is a must!

This book is written with everyone in mind: users, analysts, developers.
It describes the NAV-functionalities to have a good idea how they work in NAV.
It describes how easy it is to add functionality in NAV and the rules to follow to do it correctly (very important!).
And it doesn’t forget about performance.

Incredible how Mark has been able to cramp so much information in so little space (about 450 pages).

Don’t wait to order (Microsoft Dynamics NAV 2009 Application Design) it, you need to read it as soon as possible!

Explanation of “To NAV” : using NAV as a user, programming in NAV, do analysis for NAV. In short : you have NAV somewere in your life.

Microsoft Dynamics NAV 2009 Application Design written by Mark Brummel

As you all (probably already) know, Mark published a book on Dynamics NAV.

I haven’t been able to start reading it directly because I have had little time because of a move (well for the moment we just cleared a part of the house…). But finally I can start reading it.

Knowing Mark personally and his work (Ok, I didn’t know he was writing a book until he had written it!), I know it must a good book. After I have devoured it, I will let you know HOW good it is!

If you want some information on it or order it :  Microsoft Dynamics NAV 2009 Application Design.

You can also ‘taste’ it with this free chapter “Consulting“.

Directions EMEA 2010: my personal keynote

Read also Waldo’s blogpost : http://dynamicsuser.net/blogs/waldo/archive/2010/05/22/directions-emea-2010-final-thoughts.aspx

As always (read as : the previous 2 years :-) ), the event was a success!Good food, nice place, not so good weather (but we ware inside) and at least the evening of the galadinner was with quite good weather.

I know, my final blog post on Directions EMEA 2010 has been very late, but as you could read in another post, my portable died. So I had to take the notes on paper and later I needed to decipher them to blog them and that takes a lot of time which I don’t always have (and when I had some time, I didn’t always have the desire to do write).

Now, after 2 weeks, my computer is still broken and I have had for 1 week a portable that was older than my daughter (who is 5 years old! But wow: Windows 7 installs and works on a 512MB portable with a 1.6Ghz processor (singlecore!)) with wich I could do very little (well 5.0SP1 native without server worked and if I swapped to IE to see my email, it only took about 10 seconds!). Now I have a backup portable that is somewhat stronger and at least I can do something with it.

What did I learn with this?

Without my portable it seems I seem to be without senses and limbs!

I think next time I think I will also take a netbook just as backup. It has no CPU-power in it, but at least it is small and light!

And luckily I was not a speaker. I wonder what speakers would do if their portable died just before their session and they don’t have a backup portable……

Ending Keynote by Torben Kragelund

First we had a RTC-competition with 6 competitors: what is the best RTC solution?

Here are the competitors (in winning order) and some info:

1)AGILES WORKFLOW: guiding people on how to do something (e.g. creating a new item:what has to be done?)

2)ABECON: course industry:planning, registration, …

3)EQUISIS: Zetadocs for Dynamics NAV: document management using webservices and Sharepoint

4)CENTERLINE: Right Report Writer for MS Dynamics NAVvs. integrated into RTC to create reports. (nice tool for developers, but I think it missed the goal of the competition)

5)TO-INCREASE: Dynamics cues: gives the possibility to add stacks in an easy way to a role.

6)NAVAX: NC CUBE: making cubes (seems a good tool but it completely missed the point of the competition [and indeed they finished last])

The volcano (you know who I am talking about, do you?) was the biggest fear for Directions EMEA 2010, but everything went well. The figures prove it:

year # participants

2008 308

2009 311

2010 314

Even with the economic crisis (and the volcano crisis), Directions EMEA always had more participants. There is also a prognosis: by 2108 they will have 400 participants!

Some more stats for the 3 first years:

-1000 attendees

-204 sessions

-8100 cups of coffee

-average temperature : 12°C (not that warm!)

-rain: 80% (luckily the event is INSIDE a hotel!)

Exposing NAV Metadata by Lars Hammer

I think this is one of the most interesting sessions for developers.What is it about? Well, we always had the problem to get some info about the C/AL objects. We have some system tables to get some info like tables “Field”, “Key”, “Object”, but they give limited info on the object. To know more, we had to export the textfile and analyse that one.

The current version of “NAV metadata” is still based on that system (using EXPORTOBJECTS), but it is a first step in the right direction to have all NAV metadata readable (and hopefully also writeable) at runtime!

*why

-explore NAV application object definitions

-possible approach to reduce overhead in version

-useful to the NAV comunity? You tell us…

(My answer: YES! YES!! YES!!! YES!!! …). Let Microsoft know that you are also find it useful!!!!!

*platform for

-NDT

-…

*-export NAV

-exposed as tables

-C/AL can reach it

*overview

-prototype

-NAV application

-open to change

*dataflow: export as text and import in C/SIDE. Uses only features of NAV2009SP1.

*can be used to compute the differences between 2 versions and apply these changes to another version

*package

-container objects and modifications

-keep the base line save for reference

-create a package and then apply it on (another) baseline

*possible paths

-make available to community

-productizing DevBase

–optimize (non C/AL) DevBase import/export

–C/AL functions for compile and import (export of .fob and .html)

-support for code change

-generate cross reference info

-package+modification

–potential application modularization

-upgrade tooling

-UML-like diagramming for development

-a RTC UI

–approaching DevApp

-prototype C/AL concepts via precompilation,…

–interface

–compound data type

–design paterns

-what are your ideas?

Demoing with Hyper-V by Lyle Curry

I arrived a little late at this session because of the hotel check-out that took longer than expected.
Until now, customers I went to that have virtualization, have a VMWare solution, so I have been studying, playing, testing VMWare Server and Workstation. But I think that in the future, customers might get started using Hyper-V. So it can be interesting.
*dual boot
  -allows to setup W2008 as true workstation
  -Hypervisor running=>use as demo platform
  -drawbacks
    –3D graphics issues
    –extra partition required
*why I love boot to VHD
  -no need to partition
  -allows box-in-a-box delivery
    –exports can do heavy lifting for you
    –little if any config needed
    –minimal Hyper V knowledge needed
*requirements
  -fixed disk VHD
  -must have enough space for max size of dynamic disk on drive
  -image must be SysPrepped for initial boot
*boot to VHD configuration
  -you need to do some setup then reboot
*W2008R2 has an evaluation version!W2008 not.
  -10 days for activating, 180 days for evaluation and after that it starts rebooting. There is a re-arm to make evaluation longer
  -if you have your VM on an external disk, attach it on your computer on bootup, otherwise HyperV will get angry
*networking
  -3 types
    –private=only between VM on a single host
    –internal=like private + also host
    –external=link VM to network adapter
*wireless
  -not supported directlyby HyperV
  -to make work
    –install desktop experience and wireless LAN service on host
    –configure ICS,RRAS or network bridging with wireless adapter and Hyper V internal network. Best use network bridge: get it working and DON’T mess with it once it works!
*best practices for networking
  -use internal network in normal demo situations
    –don’t use DNS, but use hosts file on host
    –… I missed the rest
*VM files
  -.xml:configuration
  -.bin:memory of VM
  -.VSV:saved state
  -.VHD:harddisk
  -.AVHD:differencing disk for snapshots
*snapshots
  -limit of 50 and in a tree structure
  -separate location for snapshots
  -export snapshot brings all back into single structure with no snapshot
  -export main VM will include all snapshots
  -useful for DEMO
  -make snapshot BEFORE first boot
  -use branching for different customers
  -boot up and warm up all and then make snapshot
*input/export
  -export dir will contain all VM files
  -duplicate all files checkbox (keep import dir intact for other imports)
  -once imported, cannot import anymore
  -move or restore VS copy
  -…
*hardware
  - min 8GB mem
  -virus software: exclude checking Hyper V files
  -avoid memory swapping
  -multiple drives
  -use eSATA
  -fast drives

And we had little time left, so we ran through the rest…
This link, I did catch: http://blogs.msdn.com/b/virtual_pc_guy/

Windows Azure, the service bus and MS Dynamics NAV 2009SP1 by Christian Baek and Rikke Lassen

Check out Waldo’s blog about the session: http://dynamicsuser.net/blogs/waldo/archive/2010/05/22/directions-emea-2010-windows-azure-applications.aspx?utm_source=twitterfeed&utm_medium=facebook

*Windows azure=cloud services OS, server as development, services host and services management environment for Windows Azure platform. Scaleable, secure, reliable.*not intended for ERP: not written for it, licensing is not really ok for it

*the service bus: Windows Azure plaform AppFabric=>connects cloud services and on-premises applications

*high level WS applications

-desktop applications. Ex. Edit in Excel, gadgets, Bing maps integration

-platforms: .NET (C#,VB), VB Script, Javascript, Silverlight

-infrastructure: LAN, Windows authentication

-intranet application: Sweet spot for Sharepoint Client (NAV “7″)

-extranet application: infrastructure: private network, direct NAV WS

*intranet applications

-examples: web shop, public web applications, mobile integration

-platforms: any

-infrastructure: internet

*proxy listens to service bus on the cloud. no more servers in DMZ.

*security

-public service URL

–DOS attack

–possible solution: service URL includes GUID

-exposed userid/password

–data attack

–possible solution: token could be “username:GUID”

*when you are playing with it, you will run into issues. Freddy will make his session available on his blog (or maybe he already did by now.)

Value of upgrading solutions to NAV2009 by Andreas Vos

*customers

-productivity: RTC, action pane, search function (users love this ; there is a search function in Windows 2008/7 and I love that to instead of using the menu), user customization, save template with filters

-technology: SQL Server, WebServices, client extensibility

-time to “clean up”:

–51% replace with standard

–13% in use

–8% need to change

–28% unknown (user: I need that function and after 6 months no one uses it (or knows what it does)

-simplicity

–intuitionally

–I don’t lose the track

–user comment: I didn’t understand your roll blah blah, but I see what I have to work on every day

*value for

-services

-reduce support

-market share

-customer decision for next ERP period

-sell new license, add-on’s

-satisfied customers are the key for new business

*Q&A

-critical issues: talk with tech guys from customer because of service tier

-experience on hardware:

–native=>SQL is big step

–service tier server

*reasons to not to upgrade to RTC

-salespeople: we can’t sell ‘that’

-time to convert

-time to rethink some things

How to improve the testing of your solutions (application testing) by Soren Grubov

Waldo already wrote a blogpost on this : http://dynamicsuser.net/blogs/waldo/archive/2010/05/21/directions-emea-2010-testing-your-functionality.aspx. But don’t worry, I’ll give some more info.

*agenda

-test features in NAV2009SP1 -test development?

-application test toolset for NAV. Build by Microsoft on top of test features.

*NAV2009SP1 test features

-target functional test through C/AL

-ensure no UI interaction is required

-classic vs RTC (test both)

-enable test of error handling

*Now codeunits have a new property with these properties : Normal, Test, Test Runner

The Test-codeunit contains all tests to be done. The functions have a new property with these options: Normal, Test, UI Handler.

There is also a new global option : “Show C/AL testability”. I missed what it exactly does.

*demo time

-Claus created a blank Test-codeunit (the new codeunit-property), saved it and run it. a message came up saying something as “Run Succeeded”.

-Each function of type test (the new function-property) will be run by the codeunit WITHOUT writing some code to run the function.

-Functions of type Normal can be used as ‘normal’ functions to be used in the different test-functions. The will NOT be run automatically but need to be called by other functions.

-If there is some error, it will be displayed at the end of the test-codeunit.

-When testing something, it is possible we WANT an error (e.g. when inserting an existing record we should have an error to consider the test to succeed). How to do that:

ASSERTERROR BEGIN

Create some error; // By using ASSERTERROR, this will result as Success.

END;

-CONFIRM: If you have a confirm in your code, it will popup as normal. In the example, TRUE must go on without error and FALSE must generate an error. So we need to create a testcase (=a test-function) for BOTH options. How to do that? We need a function of the new function-type “Confirm Handler” (there are also other options). You need to create the function with 2 parameters (the message and the reply).

-with code coverage running while running your test-codeunit, you can check if 100% of the code is run in the object(s) you want to test.

-all the testfunctions are run in their own transaction, so you have a transaction per testfunction and not 1 big transaction

*codeunit of type testrunner

-is ‘almost’ like a normal codeunit and serves to run the test codeunits.

-the message at the end of each test codeunit will not appear, but will be intercepted by the testrunner codeunit.

-has 2 triggers : “OnBeforeTestRun” and “OnAfterTestRun” (here you get the results of the execution of a test-codeunit

-unexpected UI wil be reported as failure.

*establish test process

-when should test be developed?

–vertical:test suite for vertical solution

–customer:test suite of customer defined user acceptance test

-when should test be executed?

–vertical:test pass, release HF, upgrade, merge, …

–customer:test pass, release HF, upgrade, enhancements

-who is responsible for process?

developers and testers

*application test toolset

-At the time of the session, it wasn’t available yet. But it should be available shortly on partnersource. NAV team blog (http://blogs.msdn.com/b/nav/) will blog it when it comes out.-both on classic (code is run on client) and RTC (code is run on servicetier)

SSRS (RDLC) Reports in MS Dynamics NAV 2009 and beyond by Claus Lundstrom and Yuri Belenky

The session objective is to learn to design, modify and build reports for RTC

*key takeaways

-new reporting capabilities

-new report designer experience

-time to get starting on RDLC report

*Dynamic report i.e. sorting and visibility toggle

*save report to PDF,Excel

*view report with text colors

*display data graphicaly

*acces NAV reports from other applications

*drill through pages and reports

Demo time:

-graphical:changes between graphs and with nice colors

-adding links to drilldown to other data like customer card

-conditional formatting

-show data level per level (select interactivily)

-expand all

-add images on report from DB, external or embedded in report

-sales dashboard (see http://blogs.msdn.com/nav/archive/2009/03/30/creating-dashboards-in-nav-2009.aspx) with drilldowns to other reports.

-matrix report (see http://blogs.msdn.com/nav/archive/2009/08/28/building-a-matrix-report-in-microsoft-dynamics-nav-2009-sp1.aspx)

-use external essemblies in .NET (Claus still needs to blog about it. Or better: he thought about blogging about it. Maybe my blogpost will make him blog about it :-) )

Create a new blog and join in the fun!