25 December, 2010

Happy Holidays!

Happy Holidays everyone!

2010 has been great year for all of us at MBS Guru and Straight Arrow Consulting.  We recently wrapped up an integrated Dynamics CRM/GP implementation further evolving our Equipment Rentals Solution for Dynamics GP, are still working to help a client open a new Retail Store with an integrated Dynamics RMS solution, and are excited about all of the great projects, clients, and new products we are working with in 2011.

Check back for more posts from me, Bryan, and others after the first of the year.  As usual, we hope to grow to be more active in the community next year and expect to introduce a new MBS Guru contributor with a core competency around SharePoint soon.  We have a lot going on and are excited to share.

Cheers!

06 December, 2010

Really???? Dynamics GP Report Writer is the Best Report Writer in the World?

Wow!  I never thought I'd have an opportunity to jump between Polino and Musgrave in a squabble but I just can't resist any longer.  Maybe they'll break out the sumo suits at Tech Conference this year and they can settle this debate once and for all.

I think Dave is just trying to get a rise out of Mark but I'll chime in anyway.  Like most, I lean towards the school of thought that Dynamics GP RW should NOT even be up for consideration as a the best in the world.  BUT, that's not to say it can't be great.

You can pretty much do anything you want with GP Report Writer as along as you have 1) intimate knowledge of the inner workings of GP and 2) know how to customize reports using VBA.  Dave demonstrates some of the advanced capabilities in his latest post on how Dynamics GP Report Writer is the greatest Report Writer in the World.  The problem is, there aren't many that would have come up with such a solution.

One cannot be a great Report Writer these days unless just about anyone can write reports with it.  Just about everyone is willing to stipulate that you cannot expect canned reports from any ERP system to meet all of your company's reporting and analytics requirements.  That said, the first question asked by most GP prospects about reporting capabilities is; "How difficult is it for ME to write new reports to my specifications?".  If not for SQL Server Reporting Services, and even Crystal Reports, this would be a much harder sell relying on Dyanmics GP RW alone.  Additionally, existing reports often rely heavily on temporary Dexterity tables that can make even seemingly simple changes to existing reports a challenge.

Finally, Dynamics GP has evolved so that RW is meant to be only one of many report writers available to GP customers.  GP does ship with a vast library of canned RW reports that most find to be extremely valuable in addition to a growing library of SSRS Reports.  Some companies hardly have to customize reports at all or develop new ones from scratch.  But, when you need to you can do so with RW or you can look to other widely available and commonly known tools such as SSRS and/or Crystal among others.

You can voice your opinion on the subject in Mark's latest Facebook poll.

We should celebrate the fact that we deliver and work with a system in Dynamics GP that ships with world class reports "out of the box" and a variety of common tools that enable you to customize or develop new reports from scratch on your own.

Register today for the 2011 Microsoft Dynamics GP Tech Conference

The 2011 Microsoft Dynamics GP Technical Conference is open for registration.  This Partner event is in Fargo again this year; March 1-3.  They haven't posted the agenda, speakers, or sessions just yet but I'm sure we'll see Dave, Mariano, and some other familiar faces with some new information for us.

01 December, 2010

Support Debugging Tool Build 14 released

The latest build of the Support Debugging Tool has been released by THE David Musgrave.  Check out the fixes, enhancements, and new features here http://blogs.msdn.com/b/developingfordynamicsgp/archive/2010/12/02/support-debugging-tool-build-14-released.aspx.

Ask your partner to download it for you now.

Thanks Dave.  Keep it coming!

Microsoft Dynamics 10 eConnect C# 4.0 .NET Serialization In Memory


*Note* - This code was written for Dynamics GP 10. If you are using Dynamics GP 2010 see this updated article.

I was recently tasked with creating an eConnect integration between Microsoft Dynamics GP 10 and a custom SharePoint 2010 Portal designed to replace the GP Item Maintenance process with workflow and departmental routing.

Most of the eConnect examples I see online serialize the eConnect object to a file before loading it into an XmlDocument. This can cause unnecessary permissions concerns, and worse, if your application runs under the context of IIS or SharePoint you may not have a file system available to you at all. This was the case in my scenario. A much better approach is to serialize the object in memory.

Below is an example of eConnect serialization in memory using Microsoft C# .NET 4.0.

Assuming you have already installed the eConnect SDK 10, reference the following assemblies:

Microsoft.Dynamics.GP.eConnect.dll
Microsoft.Dynamics.GP.eConnect.MiscRoutines.dll
Microsoft.Dynamics.GP.eConnect.Serialization.dll
System.EnterpriseServices.dll

And add the following using statements:

using System.IO;
using System.Xml;
using System.Xml.Serialization;
using Microsoft.Dynamics.GP.eConnect;
using Microsoft.Dynamics.GP.eConnect.Serialization;
Here is the code to serialize the eConnectType object in memory and load it into an XmlDocument which is then passed to the eConnect_EntryPoint method:


string connectionString = string.Empty; // Set up a valid connection string.

eConnectMethods econnectMethods = new eConnectMethods();
eConnectType eConnectType = new eConnectType();

// Instantiate and populate the specific eConnect types needed.
// Don't forget to add them to eConnectType once they are set up.

// We're done building the object model, now serialize it in memory.
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xmlSerializer = new XmlSerializer(eConnectType.GetType());
xmlSerializer.Serialize(memoryStream, eConnectType);
memoryStream.Position = 0;

// Create a new XmlDocument from the in memory serialized object model.
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(memoryStream);
memoryStream.Close();

econnectMethods.eConnect_EntryPoint(connectionString, EnumTypes.ConnectionStringType.SqlClient, xmlDocument.OuterXml, EnumTypes.SchemaValidationType.None, string.Empty);

Hope it helps!