Monday, May 23, 2011

Microsoft Dynamics GP "12" Named System Database Architecture

I received a lot of feedback from the community as a whole on the 3-part series of articles on Microsoft Dynamics GP "12" Web Client Architecture and I was pleased to know that many of you are embracing the fact that there will be a Web client version of the product and are asking numerous questions about readiness.

While these articles addressed the client portion of the solution, I really did not mention anything about changes in the database architecture and how these will impact the future deployment options. So, I have released a new architecture article on Microsoft Dynamics Community, this time addressing Microsoft Dynamics GP "12" Named System Database Architecture.

In this article I look at the named system database capabilities to be released in GP "12". This is, the ability to set any name to the traditional, hardcoded DYNAMICS database. Hope you enjoy the article and if you have any comments or questions please feel free to post back.

For convenience sake, I will be adding a new link to the architecture series.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Edits:

06/06/2011 - Changed article title to fit instructions provided by Microsoft Escalation team and current developments out of Fargo.

Friday, May 20, 2011

Upgrade Strategies for Microsoft SQL Server 2008

Back in June of last year, I talked about Microsoft SQL Server 2008 Upgrade Advisor and how it can help in identifying potential upgrade issues when moving from earlier versions of SQL Server - see Microsoft SQL Server 2008 Upgrade Advisor.

Bottom line, upgrading your database server requires careful planning. If you are still in the process of considering upgrading to SQL Server 2008 and are trying to workout whether to do an In-Place Upgrade versus a Side-by-Side Upgrade, then you will want to read Arshad Ali's article on the subject over at SQL Server Central.

Upgrade Strategies for SQL Server 2008

Arshad outlines why you should upgrade, the different strategies available, how to choose an upgrade method, putting a risk mitigation plan in place for your upgrade, the sequence of events, and much, much more, including how to read the results of the Microsoft SQL Server 2008 Upgrade Advisor tool. Go and take a look.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Wednesday, May 18, 2011

Microsoft Dynamics GP Database Installation and Upgrade Statuses

I have to admit that to deliver this post I had to dig deep into the bowels of the Microsoft Dynamics GP Utilities. Installation and upgrade statuses don't seem to be anywhere (that I could find anyways) handy and can be very important when looking at a DEXSQL.LOG file for reasons of a failure during any of these processes.

Status ConstantStorage Value
DU_STATUS_DONE
0
DU_STATUS_START
1
DU_STATUS_INSTALL
2
DU_STATUS_UPGRADE
3
DU_STATUS_BIND_DEFAULTS  
7
DU_STATUS_RECOMPILE
8
DU_STATUS_CONVERT
23
DU_STATUS_POST_CONVERT
30

During the installation or upgrade of a database, status codes are recorded in the DYNAMICS..DB_Upgrade table for each Microsoft Dynamics GP dictionary being updated.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Tuesday, May 17, 2011

Unhandled script exception: Illegal address for field '[Not Found]' in script 'Unregister_Triggers'

If you have recently upgraded to Microsoft Dynamics GP 2010 R2, a few days aback, a partner reported receiving the following errors when returning from Report Writer:

Unhandled script exception:
Illegal address for field '[Not Found]' in script 'Unregister_Triggers'. Script terminated.


EXCEPTION_CLASS_SCRIPT_ADDRESSING
SCRIPT_CMD_LOAD_ATSI7




Unhandled script exception: Illegal address for field '[Not Found]'

The error is followed closely by:

Unhandled script exception:
Object has no reference.


EXCEPTION_CLASS_SCRIPT_BAD_PARAM
SCRIPT_CMD_DEREF_TABLE


Upon review, the error appears to be an issue with Extender and also happens when returning from Modifier. This issue has been written up as a bug and is scheduled to be fixed. To workaround the issue, exit Microsoft Dynamics GP 2010 R2 and log back into the system.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Monday, May 16, 2011

Microsoft Dynamics Most Influential People: Popularity vs Influence

Now that the Microsoft Dynamics Most Influential People Top 100 list is out I wanted to first congratulate everyone of my fellow MVPs and bloggers whose names appeared somewhere on the list and continue to wish everyone success. However, I also wanted to address those of you who were nominated (or not) and clearly not part of this list - see  David Musgrave's article Microsoft Dynamics Top 100 Most Influential People for 2011 published, and Mark Polino's article Top 100–Who’s Missing? for more information on the latter.

Still, I feel compelled to write this article because I believe that being "influential" has nothing to do with being "popular". Though one could argue that these two words are used interchangeably, the bottom line is that they do stand their own ground. Being influential allows you to affect outcomes, to drive people to do things because you ask them to do so or because you are doing them and they follow suit, whereas popularity is nice and clearly something my teenage daughters are concerned with - not a seasoned professional who blogs and deliver quality content to the Microsoft Dynamics ERP community and industry as a whole.

Unfortunately, measuring influence is a difficult proposition, so to say that I am influential, or that other person is influential is a mouthful. Influence clearly sounds better, however popularity is much, much easier to measure. Hence nominations and voting are at hand when it comes to select who's most influential - though most people do so thinking of popularity.

So, is it even possible to measure influence? I personally think influence is more a qualitative than quantitative element of blogging, social media, or any other influence mechanism used in the process and as such I would have to say it's difficult, if not impossible, to accurately measure. And what about people who work behind the scenes? What about someone like Kirill Tatarinov, Corporate VP at Microsoft for example? How can you measure his influence in the community? How can you tell if he influenced your decision to buy Microsoft Dynamics GP, or CRM, or any other product in the Dynamics ERP family? After all, he is not a blogger and you sure don't see him directly advertising anything, do you? Of course, he gets to do all these things at conferences, but this is every once in a while. So the question still lingers... how do you measure influence?

Disclaimer: I am not saying the "big boss" is not influential, just merely using him as an example to state my case.

I personally think my influence (if any!) comes from my professional network and my credentials as a Microsoft MVP. If I report a problem to Microsoft, it might be fixed much more faster instead of being buried in a mountain of bug reports and support tickets. If I identify a product feature that the community as a whole is requesting, it might actually get some consideration given my (perceived) status within the community. If I speak at a conference about a product like Support Debugging Tool, chances are people will go back to their organizations to download and test it. I don't necessarily see how those things can be accurately or fairly measured. How do you/can you measure the effects one person's action over another? How many minds do you have to change to be "influential"? The bottom line is you can't measure enough of the elements needed to establish if someone is influential or not.

If you really must rank the Microsoft Dynamics most "influential" people, then clearly you do what you must to get the results, but why not call it what it is... Microsoft Dynamics Most "Popular" People - automatic voting certainly did not help the case either. However, I take issue with this process because it leaves out people who are making a real difference in the Microsoft Dynamics community.

Now, can anyone explain why Doug Burgum is still considered "influential"? Rest my case!

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Microsoft Dynamics GP "12" Web Client Architecture - Part 3

This is article 3 of 3 from the series Microsoft Dynamics GP "12" Web Client Architecture. Some images and content reproduced with express permission from Microsoft Business Solutions, a division of Microsoft Corporation.

In Part 2 we explored the Microsoft Dynamics GP "12" Web Client's Rendering Engine and how it had to be decoupled from the overall Dexterity Runtime Engine functions, in order to create a Generic Window Object that could be rendered as a Windows Form or a Silverlight interface.

Today this article discusses how a Generic Window Object is transformed into a Windows form or a Silverlight UI, but before, let's remember that the Window Manager, a former part of the Dexterity Runtime Engine, is still in charge of processing the UI events while  the Rendering Engine presents the interface to the end-user.


Dynamic Form Rendering with Template Processor

Now that the Dexterity Runtime Engine has been freed of these tasks, the resulting Generic Window Object must be processed to produce either interfaces. For this, the Development team has created Template Processor.

Template Processor takes a generic representation of a window and is able to deliver an XML version of its content (fields, buttons, and events in the case of a traditional Dexterity window), called a Window Template, but as well delivers a version that the Dexterity Runtime Engine can still display in the classical client, also known as coreTemplate. The technique of processing a Generic Window Object into an XML Window Tempalte and a coreTemplate has been labeled Dynamics Form Rendering.

The XML Window Template is then delivered to Silverlight via a browser application - explicitly Internet Explorer given the use of Silverlight - where the Rendering Engine uses a Converter to serialize into a Silverlight UI. Since the Dexterity Runtime Engine retains the ability to understand the coreTemplate elements, displaying a Windows form is still a natural function.

Dynamic Form Rendering - Developer's Experience

The result will still allow developers to create traditional Dexterity customizations against the classic client UI or the XML Window Template generated by the Template Processor.

On a closing note, GP "12" aims to provide additional deployment methods to the traditional classical client deployment, where the client is either delivered as an installation at desktop level or in a Terminal Server or Citrix environment. With the Silverlight client, users can rely on their Internet Explorer browser and the Silverlight plug-in to run their Microsoft Dynamics GP application, while retaining the feature rich functionality of the classical client.

To make things even more interesting, a deployment environment can take advantage of both the classical client and the Silverlight client at the same time. Why would you need both? I suspect certain application functions like maintenance are best executed from the classical client, however in the scheme of things, it allows for a smooth end-user transition.

Finally, I hope you enjoyed this series of articles and I will continue to work with the Microsoft Dynamics GP Product Management team to deliver information to you as it becomes available (and needless to say, not deemed a trade secret). There is more to all this than meet the eyes.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Thursday, May 12, 2011

Free post-Microsoft Dynamics Convergence Atlanta 2011 webinar - RESCHEDULED!



By request, we have been asked to reschedule this webinar. Apparently interest was high, but schedules a bit conflicting. So, if you did not get a chance to sign-up the first time around, you now have a second chance! Come and join me and my fellow IntellPartners team members in this post Microsoft Convergence Atlanta 2011 webinar to gain an insight into some of the key topics covered at the event:

  • Microsoft Dynamics GP roadmap - presented by IntellPartners CEO, Ted Mauldin
  • Migrating FRx to Management Reporter - presented by MVP Frank Hamelly
  • Effectively Administering Microsoft Dynamics GP - presented by MVP Mariano Gomez

Join us - Wednesday May 18th, 11:00 AM – 12:00 PM, EST and you will be entered in a drawing to win a FREE one day guest pass to Microsoft Convergence Houston 2012! Don't miss this fabulous opportunity.

Click here for more details.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Wednesday, May 11, 2011

Microsoft Dynamics GP "12" Web Client Architecture - Part 2

This is article 2 of 3 from the series Microsoft Dynamics GP "12" Web Client Architecture. Some images and content reproduced with express permission from Microsoft Business Solutions, a division of Microsoft Corporation.

In Part 1 of this series I went through the architecture transition from the classic client (the traditional Microsoft Dexterity interface and its evolution) to the Microsoft Dynamics GP "12" Web Client and introduced some elements of that architecture (Silverlight, .NET C#, and .NET Runtime) and how these elements fall into the "Built to Last" philosophy outlined in the overall Architectural Foundation.

Today, this article will continue down the lines outlining some of the technology challenges posed by the introduction of the Web Client and the highlighting some of the radical changes (from a development perspective) needed at the core of Microsoft Dexterity and Microsoft Dynamics GP to enable the Microsoft Silverlight interface.

The Rendering Engine

If you are a Microsoft Dexterity developer, you are already in tune with the purpose of forms (windows in the general sense) as an essential part of any Microsoft Dexterity application or integrating solution. After all, there are a key mechanism by which a user will interact with the Microsoft Dynamics GP system.

As such, a Microsoft Dexterity window typically includes sanScript code associated to the controls on that window. This code executes in response to events given the intended function of the window and the controls, i.e., save a transaction, post a batch, etc., under the direction of the Script Interpreter.

Note: The process of chunking a dictionary typically involves the removal of source code for shipping of the dictionary. Hence the need for the Script Interpreter as an integral component of the Runtime Engine.

Under the hood though, the user interface is administered by the Window Manager, which in turn talks to the Rendering Engine to display the actual Microsoft Dexterity window on the screen with the control elements previously laid out by the developer.

Web Client Architecture
The tight bond between UI and code has served well up to now, but it hasn't been without its drawbacks. One of the biggest complaints registered by developers and users alike is the fact that too much of the Microsoft Dynamics GP code resides within the user interface and the confines of the dictionary which makes for a heavy client - nonetheless, fitting the traditional client/server application architecture.

To facilitate the transition to the Web Client, the Window Manager and Rendering Engine have been decoupled from the functions of the Runtime Engine, allowing the Microsoft Dexterity Runtime Engine to produce a Generic Window Object instead. With a generic window, a classic client can continue to serve up the typical Win32 forms all the while allowing a Silverlight client to serve up a web based representation of that form. Decoupling the Window Manager and Rendering Engine allows for forms to move freely between the Win32 and Web worlds with the help of another key piece of technology - more on this in the next installment.

With the Window Manager and Rendering Engine decoupled, you can now conclude that a Microsoft Dexterity application can run as a service in the background, awaiting for events that would be either received via a traditional Win32 form or a Silverlight client, and STILL be able to execute script events regardless of the type of form they were submitted through. The theory also would indicate that a Microsoft Dexterity application is the basis for a Web Client version of itself. This is, a Microsoft Dexterity applications can leverage the new architecture elements to become web enabled - but not the other way around (yet!).

But how is the classic UI transformed into a web version? In the next and final installment, I will dig a bit more into the patent worthy elements of the architecture: Template Processor and Dynamic Window Rendering.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Monday, May 9, 2011

Microsoft Dynamics GP "12" Web Client Architecture - Part 1

This is article 1 of 3 from the series Microsoft Dynamics GP "12" Web Client Architecture. Some images and content reproduced with express permission from Microsoft Business Solutions, a division of Microsoft Corporation.


In past weeks I mentioned expanding a bit more on the Web Client to be introduced with codename GP "12".

Web Client Overview

The Web Client is the full GP application delivered through the Web. The key pieces to be delivered will be the core application components, ISV dictionaries, and in-house customizations - Dexterity customizations. At the core of the web client is the UI update which will feature new homepage tiles, ribbons and tabs. Microsoft expects that UI performance will rival that of Terminal Server or better.

Client/Server Architecture Transition

Historically, the Microsoft Dynamics GP application has followed a 2-tier client/server architecture, which divides the application functions into two distinct, but very interrelated components: the database server and the client application.

The database server, which relies on Microsoft SQL Server, hosts the system and company data, along with extended business logic that allows it to process some of the heavier operations that would be extremely time consuming to perform at the client, for example, transaction posting business logic.

In turn, the Microsoft Dynamics GP client application, built on Microsoft Dexterity, has always performed the functions of delivering the user interface, providing data entry validation, and rendering reports - ok, so it does a bit more at times, but in context these are the key functions.

Transition from current Client/Server architecture to the Web Client architecture
A Microsoft Dexterity application is divided into two distinct elements: 1) a Runtime Engine that deals with the technology aspects of the application environment, like communicating to the operating system and establishing and managing the connection to the databases, and 2) a dictionary which hosts all the core application components and business logic, such as the forms, reports, and the sanScript code that makes the entire user interface and reports do something in response to user commands and input.

This architecture has been time tested and has served its purpose even after numerous technology changes over the years. In fact, application users have seen no disruption to the application functionality due to technology changes. The same could be said for changes in functionality- see Microsoft Dynamics GP Architectural Foundation Series with Tim Brookins for a primer on GP's architecture.

The Web Client, built on Microsoft Silverlight delivers a set of components and services oriented toward the UI and user interaction, including user input, lightweight UI controls for use in Web applications (some other Silverlight features that probably won't be a part of the Web Client include media playback, digital rights management, data binding, and presentation features, including vector graphics, text, animation, and images). Also Silverlight includes the Extensible Application Markup Language (XAML) for specifying layout which is heavily used by the Web Client.

The Silverlight Web Client application uses a subset of the .NET Framework that contains components and libraries, including data integration, extensible Windows controls, networking, base class libraries, garbage collection, and the common language runtime (CLR). The development language of choice, of course, is C#.

Some parts of the .NET Framework for Silverlight are deployed with the Web Client application. These "Silverlight Libraries" are assemblies not included in the Silverlight runtime and are instead shipped in the Silverlight SDK. The Silverlight Libraries used by the Web Client, are packaged up with the application and downloaded to the browser from the Server. These include new UI controls, XLINQ, Syndication (RSS/Atom), XML serialization, and the dynamic language runtime (DLR). Perhaps, not all these elements will make it to the initial release of the Web Client, but will gradually make their way in the future.

For more on Silverlight architecture click here.

Tomorrow, I will cover in more detail some of the changes required in the current architecture (from a technology stand point) to be able to serve up the Silverlight UI.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Microsoft Dynamics GP "12" Web Client Architecture Series

You've got a peek at the past Microsoft Dynamics GP Technical Conference, you saw it at Microsoft Dynamics Convergence Atlanta 2011. But do you really understand what goes on "under the hood". If you are intreagued by the upcoming codename GP "12", today I begin a series of articles oriented to shed some light on the new application architecture. Get a review of the web client and the transition from the classic client to the new architecture environment, understand what changes went into rendering the Silverlight interface, how UI templates work and future deployment options, get an introduction to Dynamic Form Rendering and why this technology is so cool.

The publishing schedule for these articles are as follows:

Published DateFeatured Article
05/09/2011Microsoft Dynamics GP "12" Web Client Architecture - Part 1
05/11/2011Microsoft Dynamics GP "12" Web Client Architecture - Part 2
05/16/2011Microsoft Dynamics GP "12" Web Client Architecture - Part 3
05/23/2011Microsoft Dynamics GP "12" Named System Database Architecture 

Disclaimer: Some images and content reproduced with express permission from Microsoft Business Solutions, a division of Microsoft Corporation. The content of these articles should not be reproduced without permission from this author.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Edits:
05/23/2011 - Added link to Named System Database Architecture article on Dynamics Community.

Thursday, May 5, 2011

IM: Integrating Timesheet Line Items not associated to a project

Just recently, I was following a thread on the Microsoft Dynamics GP Partner Forum where the partner was attempting to integrate timesheets using the eConnect Adapter for Integration Manager, but kept getting the error:

DOC 1 ERROR: eConnect The 'NONE' start tag on line 1 does not match the end tag of 'PAPROJNUMBER'. Line 1, position 2316.

When entering timesheets in the Timesheet Entry window, you can enter a line item that isn’t for a specific project by pressing TAB to default the project number to "". This instructs Microsoft Dynamics GP Project Accounting that there will be no project associated to the timesheet line.

As logic would have you believe, if you are integrating a timesheet line that is not associated to a project, it would be enough to pass the same "" string value to the timesheet line and things should be fine, right? Wrong! Passing in the "" tag caused the timesheet integration to fail with the error above.

Now to the error...

The error clearly indicates that there is a problem with an XML tag - presumably when Integration Manager serializes the source data into its XML representation.

Since IM has to marshall the source data (also known as serialization), the "" string value is being interpreted and converted to an XML tag within the serialized document. This will cause the XML document to be inaccurate. This is a representation of what I assume is happening after the conversion:


<taPATimeSheetLineInsert>
<PATSTYP>1</PATSTYP>
.
.
<PAPROJNUMBER><NONE></PAPROJNUMBER>
.
.
</taPATimeSheetLineInsert>

As shown above, the "" string value is interpreted as a new tag rather than the actual string value causing an open tag in the XML value, hence causing the integration fail. The partner confirmed that by calling eConnect's taPATimeSheetLineInsert stored procedure directly and passing in the "" string value in the project number field directly, that eConnect would process the document without any issues.

This is actually a good thing!

Furthermore, Microsoft has identified this to be an issue with the eConnect Adapter for Integration Manager and has scheduled this problem to be resolved in Service Pack 3 - no, it did not make the cut for 2010 R2/SP2.

However, the workaround is as follows:

1. Pass/Map a value of NONE to the Project Number field for the timesheet line in Integration Manager. If your source data includes the actual tags (< and >) you can use a simple field script to remove them.

2. Edit the eConnect taPATimeSheetLineInsertPRE stored procedure to include the following T-SQL code:

-- Created by Mariano Gomez, MVP
-- This code is licensed under the Creative Commons 
-- Attribution-NonCommercial-ShareAlike 2.5 Generic license.
ALTER PROCEDURE dbo.taPATimeSheetLineInsertPRE
.
.
AS
IF UPPER(@I_vPAPROJNUMBER) = 'NONE'
  BEGIN
    SELECT @I_vPAPROJNUMBER = '<NONE>';
  END


Since the PRE stored procedure executes before the rest of the taPATimeSheetLineInsert code, the proper value will be passed in to the timesheet line, hence preventing the error.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Free post Microsoft Dynamics Convergence Atlanta 2011 webinar



Come and join me and my fellow IntellPartners team members in this post Microsoft Convergence Atlanta 2011 webinar to gain an insight into some of the key topics covered at the event:

  • Microsoft Dynamics GP roadmap - presented by IntellPartners CEO, Ted Mauldin
  • Migrating FRx to Management Reporter - presented by MVP Frank Hamelly
  • Effectively Administering Microsoft Dynamics GP - presented by MVP Mariano Gomez

Join us - Wednesday May 11th, 11:00 AM – 12:00 PM, EST and you will be entered in a drawing to win a FREE one day guest pass to Microsoft Convergence Houston 2012! Don't miss this fabulous opportunity.

Click here for more details.
Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Tuesday, May 3, 2011

IM - "You must close all Microsoft Dynamics GP windows in order to run an integration"

A few weeks aback, I co-presented a deep dive session with my partner in crime, David Musgrave, at Microsoft Dynamics Convergence Atlanta 2011 DDGP03 Microsoft Dynamics GP Customization & Integration Tools Review - see Microsoft Dynamics Convergence Atlanta 2011: Day 3 for more on what happened that day.

At the end of this session, someone approached me with the old age question, "Why when I run IM integrations I receive the error 'You must close all Microsoft Dynamics GP windows in order to run an integration'?". The error looks somewhat like this:


Integration Manager error
Typically, Integration Manager will check to make sure all windows in Microsoft Dynamics GP are closed prior to beginning the execution of the integration. If all windows are found to be closed, the integration will proceed as normal, else you will receive the above error. This internal checked is controlled via a flag in the key file, Microsoft.Dynamics.GP.IntegrationManager.ini.

To be able to execute an integration with opened Microsoft Dynamics GP window, you can make the following changes to the Microsoft.Dynamics.GP.IntegrationManager.ini key file (with NOTEPAD):

AllowOpenWindows=True

The default value for this flag is False.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/