Hybrid development for the Managed Code developer (cont.)

April 27, 2011

In my previous article I outlined a hybrid development approach for managed code developers that allows for a C# or VB.NET programmer to make use of Modifier and Dexterity as complements to deliver a solution – see Hybrid development for the Managed Code developer.

In summary, a managed code developer could leverage Modifier to effect changes on the core Microsoft Dynamics GP (or any add-on or third party product) user interface, then use Dexterity to create the table definitions and routines that will make those tables available on SQL Server – the added advantage? tables are exposed to Microsoft Dynamics GP security model and are created on the first launch of your dictionary and you can create an assembly for the dictionary to drive table operations from your Visual Studio Tools solution that will not require the use of ADO.NET or even the GPConnNet.DLL file to access the tables. Finally, your Visual Studio Tools code would be used to drive the user interface controls added with Modifier and the table operations (the glue to it all if you will).

In using this hybrid approach, there are a number of considerations for deployment:

The Modifier bit
To deliver the UI changes to your customer, you will need to export a package file – using the Customization Maintenance window – that contains only the modified resource. Since it’s possible to have VBA code with your UI changes, you may also need to export any references.

As best practice, export any references as a separate package as they may already be loaded in your customer’s environment.

Since you also had to create an assembly for the modified forms dictionary (FORMS.DIC) using the Dictionary Assembly Generator tool (DAG), you need to include the Applications.Dynamics.ModifiedForms.DLL file with your package.

Note: as a best practice, you should generate a modified forms assembly using the actual forms dictionary from your client’s environment, plus your UI changes. This will prevent any incompatibility with existing forms customizations when deploying the assembly in their environment. On the flip side, some developers prefer to DAG the clients FORMS.DIC dictionary file on site after the package file has been imported. This may still require to change the references within your existing Visual Studio project to use the modified forms assembly and recompile to create your final DLL.

Deliverable work products from this section:

  • Package File with UI customizations
  • Applications.Dynamics.ModifiedForms.DLL

The Dexterity bit
Since you created a Dexterity dictionary to deliver the table implementation (and any other bit you may have needed to facilitate your development project) you will now have to follow the conventional chunking process for your Dexterity application, YourPROD.CNK.

In addition, you would have needed to create an assembly for your Dexterity dictionary to reference in your Visual Studio Tools project using the DAG utility, yourCompany.YourProduct.DLL.

Deliverable work products from this section:

  • Chunk dictionary file with table creation/upgrade routines
  • yourCompany.YourProduct.DLL assembly file

The Visual Studio bit
As you are familiar with this process, suffice to say your actual VST project that serves as glue to the UI and table operations will need to be compiled into an assembly that will be deployed with the rest of components.

Deliverable work products from this section:

  • yourCompany.YourProduct.Extended.DLL assembly file

So in summary, you will be delivering 5 components with your application. While this may sound like a lot, it makes for a really slick solution. I want to hear from you about hybrid solutions you have created and how you have leveraged each tool.

Take a look at the following related articles for more information:

VST – Amount in Words on SOP Entry window
Developing Microsoft Dynamics GP hybrid integrating applications
Dex – How to get started with Dexterity over at Developing for Dynamics GP

Until next post!

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

Advertisements

Hybrid development for the Managed Code developer

April 25, 2011

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.

During our session, we introduce a Visual Studio Tools sample that left a few managed code developers scratching their heads – a bit. The sample in question used Modifier, Dexterity, and Visual Studio Tools to provide a customization to the Vendor Maintenance window. So let’s break down the customization.

The Modifier bit

One of the limitations of Visual Studio Tools is that it cannot modify existing Microsoft Dynamics GP windows to incorporate new controls. In addition, if this particular window, the Vendor Maintenance window, was a third party dictionary resource, frankly, Dexterity won’t be the tool to modify the window either – Dexterity cannot modify third party dictionary resources.

In addition, sometimes the user requirements need the customization to be implemented on the same window where they conduct most of their work on, understandabily so, as this simplifies the navigation process. 

Vendor Maintenance with customizations

The only way to bridge the gap between the aforementioned tools limitations and the user requirements is to use the Modifier tool. Modifier will allow a developer to deliver the controls needed by the user within the desired window. In turn, by using Modifier, we are ensuring that the changes can be displayed to the user on an “as needed” basis through the implementation of standard Microsoft Dynamics GP security.

However, by adding the controls to the window, the information selected by the user still has nowhere (yet) to be stored.

The Dexterity bit

By using Dexterity, we can implement the table metadata information that will allow the data selected by the user from the newly added controls to be stored. This will require a brand new Dexterity dictionary to be created.

If you are a Visual Studio developer you may still be asking, why can’t I implement the table and storage mechanism in SQL directly. The answer? Of course you can! However, by using Dexterity, you are able to expose your table to Microsoft Dynamics GP security model as well as simplifying the calls by using standard range methods in Visual Studio Tools.

In addition, if you need to make special calls to existing Microsoft Dynamics GP programatic objects (functions, procedures, etc.) which may require you to create wrappers, you can do so from Dexterity and perform the calls from Visual Studio Tools.

xmpVendorMaster table definition

On a more mundane note, Dexterity will create the table auto procedures and automatically add the DEX_ROW_ID identity column that will allow the runtime engine to control row level locking for you. By implementing your table in Dexterity, you are also providing a failsafe mechanism against deploying incorrect table structures or a different version of the table. If you are familiar with Microsoft Dynamics GP, you will know that the SQL Server tables must strictly match the metadata definition stored in the dictionary.

However, we still don’t have a glue for the UI changes and table storage and retrieval – commonly known as CRUD operations.

The Visual Studio Tools bit
Because the UI does not know of the table or the table of the UI, you must now implement the Visual Studio Tools portion to attain the final pieces. But first, you must do a few things…
 
In order to expose the controls added with Modifier to your Visual Studio Tools project, you must create an assembly for the modified window. In order to do so, you must use the Dictionary Assembly Generator tool (DAG.EXE).
 
In addition, exposing the table you created in Dexterity will also require you to DAG your Dexterity dictionary. Once you have generated both assemblies, you can then reference them in your Visual Studio project.

Solution Explorer

Once you have the code necessary to drive the interface and store the data, you can then build your assembly. The overall architecture of this solution is as follow:
 

Customization Architecture

 
You can download the code for this sample by visiting the Convergence Atlanta 2011 materials post below:
 
Microsoft Dynamics Convergence Atlanta 2011: Presentation Materials

Tomorrow I will talk about how to deploy this solution.

Until next post!

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


Microsoft Dynamics GP 2010 R2 is hot off the press

April 21, 2011

Microsoft has made GP 2010 R2 available prior to the original launch date of May 1, 2011. The product can be downloaded from CustomerSource or PartnerSource.

For a look at a summary of the changes and improvements in this release, check out the What’s New document. This release is available as a new DVD image as well as a Service Pack 2 patch for existing Microsoft Dynamics GP 2010 installations. The Fix List and Install Guide is also available for download.

Note: Registration Keys for New Customers will not be available until the May 1, 2011 official release date. Also, the Word Template Generator is a new product for this release and is currently only available from PartnerSource.

The links below are for the Product Release and Service Pack pages:

PartnerSource

Product Release Downloads for Microsoft Dynamics GP 2010
Word Template Generator for Microsoft Dynamics GP 2010 R2
Service Pack, Hotfix, and Compliance Update Patch Releases for Microsoft Dynamics GP 2010
Software Development Kit (SDK) for Microsoft Dynamics GP 2010
Software Development Kit (SDK) for Visual Studio Tools for Microsoft Dynamics GP 2010
Software Development Kit (SDK) for Web Services for Microsoft Dynamics GP 2010
Software Development Kit (SDK) for Workflow for Microsoft Dynamics GP 2010
Service Packs and Hotfixes for eConnect for Microsoft Dynamics GP 2010
Service Packs and Hotfixes for Web Services for Microsoft Dynamics GP 2010
Service Packs and Hotfixes for Integration Manager for Microsoft Dynamics GP 2010
Service Packs and Hotfixes for Workflow for Microsoft Dynamics GP 2010
Service Packs and Hotfixes for Personal Data Keeper for Microsoft Dynamics GP 2010
Dexterity Development System Releases for Microsoft Dynamics GP 2010 (Available soon)

CustomerSource

Product Release Downloads for Microsoft Dynamics GP 2010
Service Pack, Hotfix, and Compliance Update Patch Releases for Microsoft Dynamics GP 2010
Software Development Kit (SDK) for Microsoft Dynamics GP 2010
Software Development Kit (SDK) for Visual Studio Tools for Microsoft Dynamics GP 2010
Software Development Kit (SDK) for Web Services for Microsoft Dynamics GP 2010
Software Development Kit (SDK) for Workflow for Microsoft Dynamics GP 2010
Service Packs and Hotfixes for eConnect for Microsoft Dynamics GP 2010
Service Packs and Hotfixes for Web Services for Microsoft Dynamics GP 2010
Service Packs and Hotfixes for Integration Manager for Microsoft Dynamics GP 2010
Service Packs and Hotfixes for Workflow for Microsoft Dynamics GP 2010
Service Packs and Hotfixes for Personal Data Keeper for Microsoft Dynamics GP 2010
Dexterity Development System Releases for Microsoft Dynamics GP 2010 (Available soon)

For those of you already running the Support Debugging Tool and thinking to apply the Microsoft Dynamics GP 2010 Service Pack 2 as part of the R2 release, you will be pleased to know that the current build 14 release of Support Debugging Tool will run just fine with your Service Pack 2 upgrade.

Until next post!

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


A Peek Behind the Convergence Eval Curtain – Follow Up

April 21, 2011

MVP Mark Polino just released a really nice post about what goes on behind the speaker’s curtain – see Convergence 2011: A Peek Behind the Eval Curtain. I thought I would pick up where he left with my own insight on the subject.

Let’s start by saying that Microsoft Dynamics Convergence is the biggest stage on the planet for us speakers and presenters in the Microsoft Dynamics ERP and CRM world. The amount of time that goes into preparing our sessions, assembling presentations, handouts, and demos, and making sure we are ready by the time the event actually happens is ginormous. In our case (David and I) it’s at the tune of more than 3 months and with a 12-hour difference – we are invited more than 6 months in advance, IF and when we get invited. For those of you who think we just show up on stage, there is no such thing. We actually have to earn our stripes to be in front of you every year.

So how do we earn our stripes you may ask?

Well, the first thing that comes to mind is to introduce topics that are always relevant to the community or act upon the ones that are requested by you. In our case, there’s been much interest in the Support Debugging Tool and Development Tools for the past 3 years now (if you also consider the Microsoft Dynamics GP Technical Conference), that we have become the defacto presenters for these tracks.

The second thing is to make sure that we can actually deliver… and here comes the catch 22. Delivery can only be measured by your evaluations. So it takes A LOT of convincing, a lot of good ol’ politics (in the good sense), and a good track record with the Microsoft Dynamics community to get on stage the first time around.

Once selected as speakers, we begin working on our presentations for the event. I have to be honest here… David and I always look forward to beat Mark Polino and become The Number One Microsoft Dynamics GP session and the top Convergence session, if at all possible. So yes, 1/100 of a point does count in that pursuit.

As Mark mentioned in his post, this is all in good spirit and the only one benefitting from this fierce competition is you, the attendee. Now, take our collective competitiveness and multiply it times 120. That’s how many other speakers and presenters are looking to beat everyone else across all 4 products + CRM. Every single one of us walks into the speaker room just hoping to see our names in the top 10 sessions of the ENTIRE event. Yes, those fancy flat screens are not there to catch up on Days of Our Lives, but rather to see how we are doing overall.

Speaker Room

Like Mark, we strive not only to deliver good presentations, but to hear back from you. Hearing back from you allows us to correct, fine tune, adjust, make changes for IF and when we are invited again. So your comments are important. Here are some of the ones that bring joy to our lives and relieve some of the stress:

“Excellent beyond excellent. Great dynamic between the presenters and the info was beyond useful, wish I would have had this 6 months ago on a project. Thanks for this class!”

“These two should go On Tour………..at first you get worried that their comedy act will delay getting the facts out but somehow they manage to not only give you what you need but even more before the session expires. EXCELLENT”

We don’t know who you are, but you sure know who you are, so if you are reading this thank you, thank you, thank you for your input.

We also suffer from the odd comments that makes us scratch our heads too:

“Too much information trying to be pushed out for the time allotted. Speaker talked the whole time while going through slide and the demos were just screen shots no real demos.”

Too much information? Talk through slides? Demos were screen shots? If you are familiar with David and I, you will probably know by now that we only used a summary version of our 150+ presentation slide deck and love to deliver lots of information and demos instead. This is why you paid money to come to the event to begin with! So buddy, there’s no such thing as too much information when it comes to Convergence.

We also tend to get the one comment that makes us do what we do even more and better:

“I know many people like these presenters, but personally I find them to be a bit over-the-top and too much in love with themselves. They obviously know their stuff, but their ego’s get in the way of me enjoying the session to be honest.”

I have never (ever) claimed to not have an ego and much less not being in love with myself – ask David or Michael Johnson! Yes, if you want to be on THIS KIND of stage and perform at this level you do have to know your stuff and I am frankly not ashame of either. Attendees want to know that you are a confident person who they can come up to and ask a question that have been tormenting them for months, but better yet, they want to know that they can get an answer on the spot.

That’s why I am invited in the first place, but then again, comments like these are very far and in-between.

As for the ego part, the next time you see us, don’t be surprised if we are being chauffeured in a limo to our session room. Did I mention Microsoft putting us up in the presidential suite at the Ritz Carlton?

Until next post!

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


>How to schedule Dynamics GP to automatically log in and run an Integration Manager integration – revisited

April 19, 2011

>With my newly found stride, thanks mostly to Microsoft Dynamics Convergence Atlanta 2011 and the number of interesting questions I fielded during the event, I thought it was time to revisit the issue of scheduling Integration Manager integrations as part of our deep dive session, DDGP03 Microsoft Dynamics GP Customization & Integration Tools Review – see Microsoft Convergence Atlanta 2011: Day 3 for more on what transpired that day.

If you have been a follower of my blog for sometime now, you will recall that back in January of 2009 (ok, I don’t expect you to remember this) I posted an article on the subject – see How to schedule Dynamics GP to automatically log in and run an Integration Manager integration. In short, the article looked at using the Windows Task Scheduler to launch a batch file, which in turn would launch Microsoft Dynamics GP, which in turn would use a macro to log into the system, then run a previously created shortcut to run the integration…in summary, a very complicated set of steps if you ask me. This method also presented a problem for users running Windows Server 2008 and above, since the Windows Task Scheduler no longer supports desktop interaction, which is required by the macro system to execute a macro.

Fast forwarding one year and almost half later, and I still get this question regularly: How can I schedule an Integration Manager integration?

Here is my new secret…

I use a (non-Microsoft) product called System Scheduler Professional by Splinterware. It turns out that System Scheduler has no ties to the Microsoft Windows Task Scheduler – none whatsoever! In turn, it allows the product to do some really cool things like running as a service application which is just exactly what’s needed if you are going to schedule stuff when locking down your computer before leaving for the day is a must.

System Scheduler – Event Setup

System Scheduler allows you to setup an event or a list of events to be executed and even more cool, it allows you to send key sequences to an application with a complete help file that illustrates what’s possible. In older systems (like Windows XP) you can even set it up to unlock the computer and lock it as part of the list of events. Due to restrictions in the way Windows 7 is built this is not possible, but still, not needed if you consider that System Scheduler can run as a service under the LocalSystem account or a named account.

System Scheduler – Advanced Options

You can download the product with the link below:

System Scheduler Professional by Splinterware.

The Professional version allows you to try it out for 30 days before you need to register it. It is really very simple to use and if you had had any exposure to Windows Task Scheduler then this should be a breeze. Now, instead of the complex steps mentioned in the previous article, you can schedule Microsoft Dynamics GP to launch with the typical parameters and use a macro to log you in (if not using Microsoft Dynamics GP 2010 to remember the user and company for you). Once GP is up and running, you can use a the SendKeys function to lunch IM (or IMRun) and execute the integration of your choice.

As it turns out, you can also have a multi-event schedule that first launches GP then launches IM with the integration as a parameter. Please try the tool out and let me know what you think.

Until next post!

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


>Resetting Security Roles and Task with the Support Debugging Tool

April 18, 2011

>This is my first after Convergence post and I have to say, I came away with enough questions from attendees to fill the blog for the remainder of the year. One such questions came from someone attending the interactive discussion session on security, IDGP04-R2 Tips and Tricks for Maintaining Security in Microsoft Dynamics GP – see Microsoft Dynamics Convergence Atlanta 2011: Day 4 Morning Closing Session (Cont.) for more on what transpired that day.

The individual in question wanted to know if there is a way or method to “reset” all Microsoft Dynamics GP security roles and tasks to the out-of-the-box defaults once these had been changed. After thinking about it for a bit, there is effectively a way using the Support Debugging Tool.

Step 1 – Export the security tables from a brand new installation of Microsoft Dynamics GP
In a brand new installation of Microsoft Dynamics GP, install and use the Support Debugging Tool’s XML Table Export feature to create a SECURITY profile ID, including all the security tables as shown below.


XML Table Export – SECURITY profile ID

 Step 2 – Optional: Clear the destination system’s security tables

You can then create a script using the Support Debugging Tool’s SQL Execute that will clear all the security tables in your destination system, as shown below.


SQL Execute – Clears security tables

By saving the script ID we can reuse the code as many times as needed or for future resets. Note also, that I have used the Dexterity table notation in the DELETE statement as I already had the names in the XML Table Export window.

Step 3 – Import the records exported in step 1 into the destination system

Finally, we can use Support Debugging Tool’s XML Table Import feature to reset security and reload the defaults from the XML file exported in step 1. Note that I have marked the Overwrite Table Contents option, which would render step 2 not necessary. However, having step 2 reduces your chances of forgetting to select this checkmark.

XML Table Import

I have attached the SECURITY profile ID and the RESET_SECURITY script ID at the bottom of this post. I am also including the exported security tables XML files with the default security tasks, roles and assignments. Remember that you can choose a reduce set of data to export or remove tables that you may not want to import. It all depends what level of granularity you are trying to achieve.

Downloads

DebuggerInfo.zip – contains SECURITY profile ID, RESET_SECURITY script ID, and default security roles, tasks and operations for Microsoft Dynamics GP 2010.

Until next post!

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


>Microsoft Dynamics Convergence Atlanta 2011: Wrap up

April 17, 2011

>

Well, another year, another Microsoft Dynamics Convergence, my birthday is past, and David is now home. It’s amazing to think just a few days aback David and I were hosting a GPUG session and presenting 2 topics over 3 days, and all the work that went in to making our sessions a success – thanks to all of you who attended!

As is customary, this post will provide a summary of (most) links where you can find information on Convergence just in case you were not able to attend the event or miss any of the previous posts. So let’s get started:

The Dynamics GP Blogster (this site):

Microsoft Dynamics Convergence Atlanta 2011: Day -4
Microsoft Dynamics Convergence Atlanta 2011: Day -3 & -2
Microsoft Dynamics Convergence Atlanta 2011: Day -1
Microsoft Dynamics Convergence Atlanta 2011: GPUG DayONE
Microsoft Dynamics Convergence Atlanta 2011: General Reception
Microsoft Dynamics Convergence Atlanta 2011: Day 2 morning
Microsoft Dynamics Convergence Atlanta 2011: Day 2 afternoon
Microsoft Dynamics Convergence Atlanta 2011: Day 3
Microsoft Dynamics Convergence Atlanta 2011: Day 4 Morning Closing Session
Microsoft Dynamics Convergence Houston 2012: Day 4 Morning Closing Session
Microsoft Dynamics Convergence Atlanta 2011: Day 4 Morning Closing Session (Cont.)
Microsoft Dynamics Convergence Atlanta 2011: Day 4 afternoon
Microsoft Dynamics Convergence Atlanta 2011: Evals Reminder
Microsoft Dynamics Convergence Atlanta 2011: Presentation Materials

Also, keep tuned to The Dynamics GP Blogster on Facebook for more pictures around Convergence that did not make it to the blog.

Developing for Dynamics GP (David’s site):

Microsoft Convergence 2011 Atlanta – Getting There
Microsoft Convergence 2011 Atlanta – Preparation
Microsoft Convergence 2011 Atlanta – Day 1
Microsoft Convergence 2011 Atlanta – Day 1 cont.
Microsoft Convergence 2011 Atlanta – Day 2
Microsoft Convergence 2011 Atlanta – Day 2 cont.
Microsoft Convergence 2011 Atlanta – Day 3
Microsoft Convergence 2011 Atlanta – Day 4
Microsoft Convergence 2011 Atlanta – Day 4 Guest Speaker
Microsoft Convergence 2011 Atlanta – Day 4 cont.
Microsoft Convergence 2011 Atlanta – Getting Home
Microsoft Convergence 2011 Atlanta – Wrap Up

The good thing is, most of the blogging community was present at Convergence and had an opportunity to capture some of their experiences too:

Belinda, The GP CSI (Belinda Allen)

DynamicAccounting.net (MVP Mark Polino)

The Dynamics Confessor (MVP Leslie Vail)

Dynamics GP Land (Christina Phillips & Steve Endow)

gp2themax (MVP Frank Hamelly)

The Virtual Convergence site is up and you can now relive and download the presentations you attended.  I know I did not attend a lot of the sessions that I would have liked to attend, so I will spend a few days going through these.
Microsoft Dynamics Virtual Convergence Atlanta 2011
Finally, there are a few things at Convergence you just don’t do, dancing being one of them – see Dwight Specht’s post, Don’t dance at Convergence for clear examples as to why this is a bad idea. However, I have to say that my cohorst David Musgrave has the moves. Thanks to MVP Leslie Vail and Sheila Jefferson-Ross we now get a window into David’s abilities. This video should be going viral pretty soon.
See you all at Microsoft Dynamics Convergence Houston 2012!

Until next post!

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