Thursday, September 19, 2013

Microsoft Dynamics GP Technical Airlift 2013 - More on Day 1

How does one manage to talk about a Conference when not in attendance? Well, you get reporters on the ground to tell you what's going on.

Sivakumar Venkataraman with Microsoft reminds everyone of the different tracks and sessions features in each:

My good friend Thomas Franz over at Integrity Data had a few things to relay, starting from a shout out to Microsoft and GPCC for the great content. His appreciation however goes to the one-off conversations with the Microsoft team and members of the GP community. While Thomas was entertained, elsewhere his coworker, Bobby, managed to pin down my good friend Brian Roney for a possible solution to a big customer request. Kudos to Brian and Michael Hammond who were kind enough to pickup the session I was going to deliver, Developing for the Web Client: a Microsoft Dexterity perspective. Thomas also attended the opening session with Chad an Errol and enjoyed all the roadmap talks. You can read more about the roadmap in my Day 1 coverage. Thomas also attended the Web Client Customization with VST session and noted the flexibility it provided for some of the work they are doing over at Integrity Data. I covered a great deal of this in my article VST: Rendering WinForms in Microsoft Dynamics GP web client

Thomas also attended the Deploying Microsoft Dynamics GP 2013 on Windows on Azure session presented by my good friend Daryl Anderson. He was looking at this for a possible SharePoint hosting solution for their U-LINC customers. 

After the day of sessions, they headed outside for the welcome reception were discussions revolved around current project issues.  Somehow, the Integrity folks managed to muster some energy to host a coding party in Bobby’s room at the hotel. Bobby and Nick started proving out Brian Roney’s suggestion and I provisioned a new SharePoint server on Azure.  Where else do you get to do this stuff?

I am sure there was a lot of serious conversations going on at the Welcome Reception, but I find that some people just prefer to enjoy life for what it is... you go ladies!

Windi Epperson (The Knaster Group)
Linda Brock (The Knaster Group)

More on Day 1:

GP Airlift 2013 - Day 1 (Kuntz Consulting Blog)

Thanks to my reporters Thomas Franz with Integrity Data and Tanya Henderson with S2 Technology.

Day 2 updates to follow.

Until next post!

Mariano Gomez, MVP
IntellPartners, LLC

Wednesday, September 18, 2013

Microsoft Dynamics GP Technical Airlift 2013 - Day 1

The Microsoft Dynamics GP Technical Airlift 2013, hosted by GP Partner Connections is now in full session.

Unfortunately, last minute circumstances prevented my participation as a presenter this year, but in retrospect, it was probably a good thing as I really don't want to become like those actors that show up in just about every movie.

The sessions list for this year is off the chain and if you are a propeller head like me, you can certainly attend some really cool sessions:
  • Developing for the Web Client: a Microsoft Dexterity Perspective (Sept 18, 1:15 PM CST)
  • Dynamics GP Multitenant for Developers (Sept 18, 2:30 PM CST)
  • Dynamics GP Development Team Unplug (Sept 18, 3:45 PM CST)
  • Dexterity and Services: Can they be friends? (Sept 19, 11:15 AM CST)
  • Web Client Customization with VST Deep Dive (Sept 19, 4:00 PM CST)
In addition to these development sessions, there are tons of other development related sessions around Window 8 and Windows Phone, and BI for GP.

You will not want to miss the closing session on Friday either. That promises to be a complete surprise, according to my friend Jay Manley. Find detailed information on sessions here.

Being away, however, doesn't give me the right to not know what's going on and I can tell you that the first major update coming out of Fargo is a roadmap refresh.

Roadmap Update

The next big thing in the horizon, of course, is all the buzz surrounding GP Next, Microsoft's next generation of the award winning Microsoft Dynamics GP -- okay, I sounded a bit like a salesman there, but hey, ain't we all? To deliver the "next generation" of products you have to imagine there will be a "next generation" of tools. What will happen with Dexterity? What will happen with Visual Studio Tools and, of course, Silverlight development? As GP expands more into a service model, and away (in some sense) from its Client/Server roots how will the development tools be enhanced?

Microsoft delivered ahead of expectations on the SP2 updates for GP 2013 in the second half of this year, which included close to 20 new enhancements, drifting away from the traditional Feature Pack concept. Pam Misialek explains this as a way to deliver functionality out the door much, much quicker to customers. You can read more here.

The next major wave will be coming in the first half of 2014 and will see significant enhancements to Workflow, a move to add Requisitions into Microsoft Dynamics GP, a Windows 8 Procurement app, and some Identity Management concepts.

I also have my spy reporter at the conference and this is the first picture coming out from Fargo with MVP Leslie Vail presenting the Support Debugging Tool session (with MVP Belinda Allen).

Leslie in the Support Debugging Tool session
The credit for the above goes to Tanya Henderson at S2 Technology.

I challenge you to be my reporter by taking pictures and relaying your experience. Email  your pictures and updates and I will make sure you get credit for your work in my article. All pictures will be uploaded to The Dynamics GP Blogster on Facebook for everyone to see. If you attend an interesting session and/or hear of the latest buzz around the corridors, please feel free to email me too.

I wish everyone in attendance a great conference and hope you enjoy every bit of it.

Until next post!

Mariano Gomez, MVP
IntellPartners, LLC

Monday, September 9, 2013

VST: Rendering WinForms in Microsoft Dynamics GP web client

In my previous article I discussed applying Service Pack 2 to update your VST development environment. The SP2 update introduces the ability to render VST WinForms in the Web Client.


Prior to the release of Microsoft Dynamics GP 2013 RTM, the application development and technical consulting communities got to preview the web client at the Microsoft Dynamics GP Technical Airlift 2012 in Fargo in a Web Client Jumpstart Training for partners. Following the training and attendance to some sessions, VST developers got the bad news: "Only Dexterity applications are fully compatible with the web client". That left a number of you with the proverbial (and probably literal) bad taste in the mouth and scrambling for answers. Microsoft came back with a consolation price announcement: "Only VST applications written without using WinForms will be supported in the web client". In retrospect, I feel the message could have been delivered differently, but I digress.

Fast forward to SP2 and Microsoft did what it does best: make things right! VST developers now have the ability to render WinForms in the web client... with a few caveats.

The Boring Theory

With the RTM release of Microsoft Dynamics GP 2013 web client, VST developers needed to make a slight change to the way assembly add-ins were exposed to the desktop client and/or web client. By default assemblies were not loaded by the Runtime Engine and Web Client Runtime engine. In contrast, VST assemblies placed under the traditional AddIns folder would load in the desktop client (Dexterity client) only.

Now, to have an integration load on the Microsoft Dynamics GP web client, you must add the SupportedDexPlatforms attribute to the class that implements the IDexterityAddIn interface to indicate that the integration works for the web client.

Once you have indicated what platform your application will be compatible with, it's time to address your WinForms. Microsoft has leveraged its rendering engine to support two different types of rendering for WinForms: dynamic and custom rendering.

To use dynamic rendering, your Visual Studio Tools form must use controls from the supported list. The following controls are automatically rendered:
  • Button
  • CheckBox
  • ComboBox
  • GroupBox
  • Label
  • ListBox
  • RadioButton
  • TextBox
If the WinForm uses controls that aren't included in this list, those controls won't be rendered on the form when it is displayed in the web client. In those cases, you must implement custom rendering.
Dynamic rendering is the simplest technique for implementing a Visual Studio Tools form that works on the Microsoft Dynamics GP web client. With dynamic rendering, the web client runtime does the necessary work to display the Visual Studio Tools form in the web client. It also handles the communication between the web client machine and the web client server.

To enable dynamic rendering for a form, the form must derive from DexUIForm class. You must add the WCCompliantWindow attribute to the class that defines the form. This attribute indicates that the form should be automatically rendered by the web client. If this attribute isn't found on the form, the form will not be displayed in the web client.

The fun part!

Let's take canned PostingSOPBatches2 example. The first task at hand is to determine what platform the VST application will support:

In the above, we have added the SupportedDexPlatforms attribute, which takes one parameter that indicates which platform or platforms are supported by the integration. In this example, the logical-or operation is used to indicate that both the desktop client and the web client are supported.

With the client defined, the next focus is on the WinForm itself.  The following is our WinForm layout:

Once you complete the layout of the form, double-click on it to open the associated code:

The WCCompliantWindow attribute takes one boolean parameter that indicates whether dynamic rendering is supported for the form.

That's it! Compile away and test, test, and test, your code to make sure it works and that no rendering issues occur. You should place the resulting assembly, in this case postingSopBatches2.dll and its config file in the AddIns folder under your Microsoft Dynamics GP 2013 root folder. Launch the Web Client and display the form. For this example, we have placed the form under the About Microsoft Dynamics GP box, but could have well written an event handler to display it under SOP Entry where it really belongs.

So what happens to things like grids and custom controls? Those will need to be rendered using Custom Rendering. In my next article I will discuss this method and some of the drawbacks you may face while doing so.

Thanks to Kevin Racer (Twitter: @kracer123) and Michael Hammond (Twitter: @mhamm_msft) for their valuable contributions to this article.

Remember, the best application development techniques usually involve a Hybrid Development approach. There's always a way to accomplish the end goal and ultimately, is up to you the developer to consider at all the options available.

Until next post!

Mariano Gomez, MVP
IntellPartners, LLC

Friday, September 6, 2013

VST: Updating your Visual Studio Tools Web Client Development Environment

Microsoft Dynamics GP 2013 SP2 (12.00.1482) introduced some really cool new updates to a lot of application components. Yesterday, for example, I talked about the SmartList Designer and how it really takes the SmartList experience to new heights.

Visual Studio Tools and Microsoft Dynamics GP 2013 SP2 introduce support for WinForms rendering on the Web Client - more of that in my next article, but before we get into the details, here's what you need to know to prep your development environment:

1. You must install Visual Studio Tools for Microsoft Dynamics GP Service Pack 2 in your system. The VST msi update can be found under MDGP2013_SP2_DVD_ENUS\Tools\SDK\VS Tools\Updates folder in the full DVD image available from CustomerSource or PartnerSource. This should bring the VST components to version 12.00.1488.00 while updating all templates in your Visual Studio development environment.

Visual Studio Tools SP2 build number check Control Panel | Programs

2. You must apply Microsoft Dynamics GP 2013 SP2, which in turn should upgrade the Web Client Runtime components on your session host machine(s). The Microsoft Dynamics GP 2013 SP build number is 12.00.1482 and the Web Client Runtime assemblies will be updated to version

Web Client Runtime build number check under About Microsoft Dynamics GP | Additional | Web Client

NOTE: If you are, in addition, doing Dexterity development you must follow the procedures outlined in to complete the update of your Dex application, since SP2 will also update the Dynamics dictionary.

3. Finally, you can upgrade the Web Client components themselves, by running the msi found under \MDGP2013_SP2_DVD_ENUS\AdProd\WebClient\Updates on the full DVD image on your IIS server. The Web Client components should be at version 1.0.516.0 after the update is completed.

Web Client build number check under Control Panel | Programs

If you are anything like me, all this stuff runs on your development laptop. However if you are a part of a dev team, you should determine where each of these components reside in your environment and update accordingly.

For more information on Microsoft Dynamics GP 2013 SP2 take a look at my article Microsoft Dynamics GP 2013 Service Pack 2 is now available.

For additional information on updating your Visual Studio Tools applications to Service Pack 2, you will want to follow instructions outlined in the Upgrading an Integration section of the Getting Started chapter of the Visual Studio Tools for Microsoft Dynamics GP content online at MSDN Library.


In my next article, I will talk about rendering Visual Studio Tools' WinForms in the Microsoft Dynamics GP Web Client.

Until next post!

Mariano Gomez, MVP
IntellPartners, LLC

Thursday, September 5, 2013

SmartList Designer: a nice addition to Microsoft Dynamics GP 2013 SP2

12.00.1482 - the build number for Microsoft Dynamics GP SP2 - brought with it a new list of awesome enhancements. The SmartList reporting tool saw some big improvements with the addition the collapse/expand of the left navigation pane, and a splitter between the tree view and the list box control that displays the actual results. 

I have to say, I like the concept, but not the implementation as I believe Microsoft could have used the splitter code written with the Support Debugging Tool as a more elegant solution.
*End Soapbox*

However, the biggest improvement/addition to SmartList is the new SmarList Designer.

SmartList Designer

SmartList Designer allows you to create queries based on table definitions found in Microsoft Dynamics GP and any third party application. You can create a new SmartList or to create a new SmartList based on an existing SmartList. You also can modify the SmartList that you created using SmartList Designer.

I have to say, if you have had a number of SmartLists built with SmartList Builder, then using the SmartList Designer should be a piece of cake. I've found the user interface to be extremely intuitive and all the controls and navigation just seem to be in the right place.

Now, the one-million-and-one-dollar question...

How is this tool different or similar to SmartList Builder?

The similarities are obvious: they both allow you to create SmartLists from scratch based on any Dexterity dictionary table definition using a very intuitive UI. SmartList Designer however, goes a bit further and allows you to preview the data without even releasing the new list into production. If nothing else was provided, this would be the one feature to cherish. SmartList Designer also allows you to build SmartLists based on other SmartLists, a feature currently not available in SmartList Builder.

SmartList Builder allows you to access tables and views that aren't a part of a Dexterity dictionary, this is, tables and views created directly in the SQL Server company database. Of course, on of the advantages of this approach is being able to access data from other non-Microsoft Dynamics GP databases on your server. I also believe calculated fields in SmartList Builder are more powerful as you can access the wide array of functions provided by the version of Microsoft SQL Server you are running on. SmartList Designer, in turn, provides a preset number of commonly used (as in limited) functions catalogued as Arithmetic, Text, Date & Time, Math, and Aggregate.

I also like the slick the deployment method of SmartList Designer Smartlists: "OK and done!". SmartList Builder, in turn, has to push these to SmartList, which in turn reads the elements and convert them to an actual SmartList - a pseudo compilation, if you will.

To access SmartList Designer, click on the New button on SmartList's toolbar.

SmartList Builder

I invite you to weigh in on the new SmartList Designer. Tell me what you like or don't like and let me know if you consider it alternative to SmartList Builder.

Until next post!

Mariano Gomez, MVP
IntellPartners, LLC