Monday, March 16, 2015

Microsoft Convergence Atlanta 2015: GPPC PreGame


Hi everyone and welcome to Microsoft Convergence 2015 from the beautiful city of Atlanta, Georgia, my hometown. I really like that Convergence has called Atlanta home 4 out of the past 5 years - it also makes it pretty convenient for me to attend while sleeping in the best hotel in town: my home!

Microsoft Convergence 2015 welcome banner at Georgia Wold Congress Center
After not much convincing, David accepted my invitation to stay to be a guest for the duration of Convergence. As such, my jobs is to also make sure we get to and from the convention center on time for the numerous commitments we have this week.

On of those commitments involves attending the PreGame 2015 event hosted by Dynamic Partner Connections, held at the Westin Peachtree Plaza hotel. If you are familiar with this Downtown Atlanta landmark, you will remember it was severely damaged during the 2008 Atlanta tornado outbreak and having to replace over 5600 windows during the renovation process.

David Musgrave and Shanna Hensch
After registering for the event, we both caught up some good ol' friends of ours and had a chance to exchange pleasantries.

From left to right: David Musgrave, John Lowther, Belinda Allen, Kim Peterson, Mariano Gomez, and Bob McAdam
While I had a session to present at PreGame, I took the opportunity to attend a 1:00 PM session, Using CRM, Office 365, Azure, and the cloud to turbocharge sales moderated by Errol Schoenfish.

Errol Schoenfish
In this session the panel conducted an interactive discussion and heard from partners that have accelerated their sales process to accommodate an ever changing sales environment. These partners are also delivering and deploying Microsoft Dynamics GP in a Cloud first world to both new and existing customers.

After the session was over, I quickly returned to the Congress Center to attend the Dynamics GP General Session rehearsal. It's always exciting to catch up with my many Microsofties from Fargo, North Dakota.

Brian Mayer and Jodi Christiansen
It's always cool to see the amount of prep work from the Audio and Video engineering technical staff to make these events and presentations go as smooth as possible. The guys are really engaging and always willing to accommodate pretty much any request as it relates to device connectivity and interfacing to the systems.

Add caption
Unfortunately, a confusion in schedules prevented me from participating in the actual rehearsal since tech check was being conducted from 3 - 4 PM, which encroached on my PreGame session at 4:00 PM. So, I left around 3:30 and back to the Westin.

My session, Microsoft Dynamics GP 2015 Installation and Configuration began with sharp at 4:00, with 10 partners in attendance in the room. We walked through the Microsoft Dynamics GP architecture and its evolution to today's Web Components, including web client and Service Based Architecture. We had a chance to conduct a full install of Microsoft Dynamics GP, working through the different screens, but unfortunately, ran out of time to address Web Client implementation in full. Since Service Based Architecture depends on having a domain environment, we could not install it either. Nonetheless, a good effort was made to explain the process and what can to expect during the installation.

The session went over the allotted 2 hours and ran until 6:30 PM. I really thank the attendees for gutting it out until then. However, this type of class is suited for a half-day or full-day format.

Up next was the partner reception hosted by Microsoft on the 8th floor of the Westin. After partaking and exchanging pleasantries with many fellow business partners in attendance, it was time to attend the MVP Mingle event.

Partner Reception

The MVP Mingle is a partner sponsored event. We count with the support of FastPath, which specializes in security access and segregation of duties monitoring and compliance, and Data Masons, which develops integrated EDI solutions for the Microsoft Dynamics ERP products.

MVP Mingle

The FastPath Team: Jeff Soelberg, Liz Piteo, Nate Boettcher, Trish Boccuti, and Andy Snook
The MVP Mingle was hosted at STATS Food + Drinks, which has some great appetizers and a good selection of local, national, and foreign brews.

Having a 7:30 AM GP General Session rehearsal meant that it was time to wrap up early and drive home to get some rest for the next day.
Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Friday, March 13, 2015

You receive "Unable to Upgrade SBA from RTM" when attempting to apply Microsoft Dynamics GP 2015 January or March Hotfix

Well, this one for sure has bitten more than one person already. I've seen a lot of exchanges and fielded a number of calls from folks trying to install the January or March hot fixes of Microsoft Dynamics GP 2015. When the msp file is executed, couple seconds into the execution you receive the following error message:

"Unable to upgrade SBA from RTM. Please remove the SBA feature before running this patch."


The first reaction is to try and find the feature via the Uninstall or change a program options under the Windows Control Panel. As it turns out, there's no such option. This has led many folks to the next "obvious" option: Microsoft Dynamics GP Web Components.

When you choose to uninstall the Microsoft Dynamics GP Web Components, you will get rid of the Web Client install, but not the SBA components.

So what's the solution?

The keyword in the error message is the word "feature". SBA is a Microsoft Dynamics GP feature. In order to remove, you will need to right-click on Microsoft Dynamics GP 2015 and select the change option.


You will then click on the Add/Remove Features option in the Program Maintenance window, then scroll down until you see the Service Based Architecture option in the Select Features window. You can the proceed to click on the corresponding options button associated to the SBA prompt and select Not Available.

Select Features window
Once you click Next, the installer will proceed to remove the feature from your environment. When completed, you can re-run the hotfix msp to apply the updated code.

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Thursday, March 12, 2015

You receive "You are not allowed to use Microsoft Dynamics GP. Please sign out and sign in with an authorized account" when accessing Web Client with Directory Account

One of the cool things about Microsoft Dynamics GP 2015 is the new Web Client Identity Management feature. Having the ability to access Microsoft Dynamics GP with your Windows Directory or Windows Azure credentials without ever needing a SQL login account is just beautiful.

The Theory - Part 1: GP Utilities

The theory is fairly simple: you have a Microsoft Dynamics GP user account, which in turn is tied to a Windows Active Directory account or Windows Azure Active Directory account. User accounts are stored in the User Master table (dbo.SY01400) in the system database, which has been beefed up with a new column called Active Directory Object GUID (ADObjectGuid) to store the actual GUID of the directory or organizational account mapped to the GP user.

User Setup window
However, because Microsoft Dynamics GP continues to be dependent on SQL authentication for all intends and purposes, it continues to need a SQL login to be able to access the Dynamics GP database objects. This is where the new Web Client SQL Login user comes into play.

If you have done a new install of Microsoft Dynamics GP 2015, you would have noticed a new window called Manage Web Client SQL Server Login during the GP Utilities process. This window prompts for SQL credentials that will be used to access the SQL server database objects from Web Client.

Manage Web Client SQL Server Login window (GP Utilities)

If you are doing an upgrade, you will need to direct your attention to the drop-down list in the Additional Tasks window to find it -- more on this later.

Additional Tasks window (GP Utilities)

When you enter the credentials in the Manage Web Client SQL Server Login window, the actual SQL Server security principal is created with the same password encryption at the database level. To understand more about this, read Why does Microsoft Dynamics GP encrypt passwords by David Musgrave over at Developing for Dynamics GP.

The Theory - Part 2: Web Client

When you are installing the Web Client itself, you are once again prompted to enter the Web Client SQL Server Login credentials. At this stage you MUST enter the same account information entered when you ran the GP Utilities.

This information is stored in the TenantConfiguration.xml file (in a single-machine instance) under the SessionCentral folder. The same information is used by the Service Based Architecture service (GPService service) to gain access to database resources, hence there's also a TenantConfiguration.xml file (again, in a single-machine instance) under the GPService folder. These two folders can be located under your \Program Files\Microsoft Dynamics\GP Web Components root folder.

Now that your AD or Organizational account is tied to your GP user account, when you launch the web client and your AD credentials are validated against IIS, a security token is created and passed on to Session Central service, which in turn spins up a runtime process passing on your AD account credentials in the GP Login window. The log in process itself will use the Web Client SQL Server login to access the system database and in particular the User Master table to validate the AD account GUID against the one stored in the table. If all matches, you are allowed access and from there on you go about your business.

The Problem

This brings us to the topic of this post...

As it turns out, during that handshake between Session Central and the Runtime service to pass off the AD credentials, I received the following error:



Further review of the Dynamics application and services log in Event Viewer, shows the following error:

System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed.
   at System.Security.Cryptography.CapiSymmetricAlgorithm.DepadBlock(Byte[] block, Int32 offset, Int32 count)
   at System.Security.Cryptography.CapiSymmetricAlgorithm.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)
   at System.Security.Cryptography.CryptoStream.FlushFinalBlock()
   at System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing)
   at System.IO.Stream.Close()
   at Microsoft.Dynamics.GP.Web.Foundation.AesCryptographer.Decrypt(String value)
   at Microsoft.Dynamics.GP.Web.Services.Session.TenantServiceXmlHandler.ResolveTenantPasswords(Tenant tenant)
   at Microsoft.Dynamics.GP.Web.Services.Session.TenantServiceXmlHandler.GetTenantDetails(String identity, String tenantName)
   at Microsoft.Dynamics.GP.Web.Services.Session.Service.SessionCentralService.CreateSession(String tenantName, UserContext userContext)

Typically, any Crypto exception is directly related to credentials. So I traced back my steps after the upgrade and realized I had created the Web Client SQL server login account manually -- after all, I had not seen the option in the GP Utilities drop down to do so. Of course, this would mean that the password was un-encrypted on SQL server and wouldn't match the password stored in the TenantConfiguration.xml file. In retrospect, had I even used GP Utilities to setup the account and entered a different password from the one I entered during the Web Client install, I would have received the same error.

The Solution

Knowing that in essence what I had was a password mismatch between the value stored in TenantConfiguration.xml and the password at the SQL Server level, I decided to make things simple and removed the database user (sp_dropuser) corresponding to the security principal and the actual security principal (sp_droplogin) then re-launched GP Utilities and created the account once more, this time making sure the password matched what I had entered when installing the Web Client.

Once I launched the Web Client and entered my Windows credentials information, I was able to experience the beauty of single sign-on all the way to the company database I had selected as my default company.

Also, it is worthwhile to mention that Service Based Architecture was failing validation, but I will address this in my next article.

Acknowledgements

I want to thank Chris Rudolph with the Microsoft Dynamics GP Software Engineering team for his valuable insight into working through this issue. Chris also helped me with understanding some deep architecture stuff that I will be presenting in a future related article to this one.

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Wednesday, March 11, 2015

Silverlight "ArgumentException: An item with the same key has already been added" when attempting to print a report

It's been about 3 months now since working with Microsoft Dynamics GP 2015 in our production environment. To recap, at Intelligent Partnerships we run all our information technology infrastructure on Microsoft Azure. A big reason for this, of course, is the high degree of mobility required by our consulting staff and the ability to access demo environments and be able to enter timesheets and expenses from anywhere in the world they happen to be. In addition, we need to be able to run our business and access our financials and analytics without being constrained to a particular geographical location. As such we rely heavily on Dynamics GP's Web Client and Business Analyzer to achieve these goals.

One of the issues we started noticing with Web Client recently is, when you attempt to print a report - Standard or Template - but cancel out the printing on the Report Destination window, then attempt to print the report once more, we would receive the following Silverlight error message:

Severity: Critical Summary: A server side exception of type "ArgumentException" has occurred. Details: ArgumentException: An item with the same key has already been added. at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at Microsoft.Dynamics.GP.Web.Services.Runtime.Dexterity.Hierarchy`1.Add(T ancestor, T item) at Microsoft.Dynamics.GP.Web.Services.Runtime.Dexterity.Implementation.WCDexRuntimeStateResourceManager.Register(DexUri parentId, IWCDexWindow window) at Microsoft.Dynamics.GP.Web.Services.Runtime.Dexterity.Implementation.Adapters.WCDexFormOpenStateChangedNotificationAdapter.Notifications_FormOpenStateChanged(Object sender, DexUriEventArgs`1 e) at System.EventHandler`1.Invoke(Object sender, TEventArgs e) at Microsoft.Dexterity.Runtime.Interop.DexNotification.OnFormOpenStateChanged(DexUri uri, DexFormOpenState value) at Microsoft.Dexterity.Runtime.Interop.Win32.NativeMethods.MsaCommandExec(Int16 tag) at Microsoft.Dexterity.Runtime.Interop.Win32.NativeMethods.<>c__DisplayClass26.b__25() at Microsoft.Dexterity.Runtime.Interop.Win32.NativeMethods.ExecuteMsaAction(Func`1 interopAction, String entryPoint) at Microsoft.Dexterity.Runtime.Interop.Win32.NativeMethods.MacroSystemCommandExecute(Int16 tag) at Microsoft.Dexterity.Runtime.Interop.DexMacroSystem.CommandExecute(Int16 tag) at Microsoft.Dynamics.GP.Web.Services.Runtime.Dexterity.Implementation.WCDexMessageProcessor.ProcessCommandExecuteInstanceResourceMessage(IWCDexMessage msg) at Microsoft.Dynamics.GP.Web.Services.Runtime.Dexterity.Implementation.WCDexMessageProcessor.Process(IWCDexMessage message) at Microsoft.Dynamics.GP.Web.Services.Runtime.Dexterity.DexRuntimeStateManager.SendMessage(IWCDexMessage message) at Microsoft.Dynamics.GP.Web.Services.Runtime.Dexterity.DexRuntimeStateManager.MainEventLoop()

This particular error was received attempting to print a sales order processing quote, but we have been able to reproduce from other windows. While I don't claim to understand all these exceptions, this particular one seems to refer to an issue caused by a "key" being added twice to the same "Generic.Dictionary" collection. Since the action causing the error seems to be a second attempt at printing a report - the same report it seems - somewhere along the lines it would appear that some value isn't being cleared out from the collection of reports being printed which would cause a duplicate key. Again, pure speculation.

Nonetheless, in speaking to the Dynamics GP development team, it seems to be this issue has been written up and may be solved in the upcoming hotfix release. This issue can be reproduced in Microsoft Dynamics GP 2015 build 14.00.0619 (January Hotfix).

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Thursday, February 12, 2015

Microsoft Dynamics GP 2015 Identity Management

Hi everyone! It's been hectic around here with a few projects going live in these days, in addition to preparations for Convergence 2015 here in Atlanta.

I wanted to draw your attention to two videos currently posted on the Microsoft Dynamics YouTube channel, related to the Identity Management feature.

Identity Management was introduced with Microsoft Dynamics GP 2013 R2, so is probably good to go back and review the original feature design goal with Tara Higgins with the Partner Technical Consulting team.



With Dynamics GP 2015, the feature was extended to cover authentication with organizational accounts, which provides single sign-on capabilities for Microsoft Azure AD accounts. Identity Management for organizational accounts is a web client feature only. Take a look at this video by my buddy Jason Lech with the Escalation Engineering team.



My goal is to release a video showing a real life example on how to set this up. So stay tuned.

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Monday, February 2, 2015

Microsoft Super Bowl XLIX Commercials: #Empowering

Super Bowl XLIX is now over and congratulations are in order for the now 4-time champion, the New England Patriots organization led by head coach Bill Belichick and quarterback Tom Brady. I must also extend congrats to the Seattle Seahawks who put up quite the fight until the end, and simply could not complete the rare feat of a back-to-back championship.

You can catch the game highlights below:



And speaking of winners, how about those touchy Microsoft #Empowering Super Bowl commercials (remember Super Bowl XLVIII ones?) Microsoft came up with two real life examples showing where their technology is being applied to improve the lives of people. You be the judge of these two ads.

Braylon O'Neill's story


Microsoft Super Bowl Commercial 2015: Braylon O'Neill   

Braylon was born with a strong sense of determination. He was also born without the two bones that make up the lower leg: the tibia and the fibula.

At just 11 months old, Braylon was fitted with his first prosthesis. His doctors use technology to track his gait mechanics and make adjustments that maximize his strength and performance. Braylon is now an unstoppable speed demon – in races with CAF (Challenged Athletes Foundation) he has taken home medals and inspires others to reach beyond their limits

Estella Pyfrom's story


Microsoft Super Bowl Commercial 2015: Estella’s Brilliant Bus

Estella Pyfrom could have chosen to enjoy a nice quiet retirement. Instead, she had an idea that would change her life and the lives of thousands of families.

At the age of 71, Estella decided to spend her life savings and build a bus to bring technology to underserved communities. Today, Estella's Brilliant Bus has helped more than 60,000 children gain access to technology and envision a bigger, brighter future for themselves.

Click to find out more about Microsoft #Empowering. Catch more Super Bowl XLIX videos on the NFL's YouTube Channel.

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Wednesday, January 28, 2015

Microsoft @HoloLens - The stuff of science fiction

I usually don't deviate much off the topic of Microsoft Dynamics GP, but this new piece of Microsoft technology is certainly a force to be reckoned with and worth a note. If this thing works as advertised, pretty soon your interaction with the world around will be turned upside down, whether you are a gamer, a designer, an engineer, or who knows. Enjoy the videos and let me know what you think. Do you see this being used with Dynamics GP in the feature?



The folks over at C|Net decided to take it a bit further and create a complete holo-experience. Now, this stuff is really cool.



Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Tuesday, January 20, 2015

Welcome to the Microsoft Dynamics GP Engineering Team blog


Now, here's something you don't see every day: in the trench software development and testing engineers having time to write anything other than code. Well, the Microsoft Dynamics GP Engineering Team (consisting of the Development Engineering and Testing teams) have decided to break their 'silence' (so to speak) to pick up their digital pens and deliver some awesome content.

From this group you can expect content around the inner works of Service Based Architecture, Workflow and myriads of other engineering topics.

If you are an avid Microsoft Dynamics GP development engineer, a Microsoft Dynamics GP ISV, a technical consultant looking to propel your knowledge to new heights, then this new resource is for you! Expect coverage from folks like Alice Newsam, Rob Anderson, Michael Hammond, Chris Rudolph, Yuri Mikeev and others.

Below please find the link to the Dynamics GP Engineering Team Blog:

Dynamics GP Engineering Team Blog

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Disclaimer: the above banner is not an official Microsoft or Microsoft Dynamics GP Engineering Team logo and was created solely for the purpose of bringing attention to the team's new Community site.

Thursday, January 8, 2015

Third reason to attend #CONV15: @dgpblogster and @WinthropDC


Wow! As if having Satya Nadella and OneRepublic as a 1-2 punch combination reason for attending Convergence 2015 in Atlanta, Microsoft has now decided to amp up the magic by inviting no other than the Dynamic Duo of presentations: David Musgrave and Mariano Gomez (that would be me!).

Mariano Gomez and David Musgrave
Inside joke: in case you can't tell us apart, I'm the taller one and David is the shorter one

Realizing no event is complete without a formidable duo of presenters, Microsoft has reached out to us -- as the famous LeBron James once said, "Not 2, not 3, not 4, not 5...", but 6 times now to come and help to make this one of the biggest customer events ever.

David and I will be delivering a blockbuster session, CS15G024: Microsoft Dynamics GP 2015 customization which will feature tips and techniques we've learned for developing Dexterity and Visual Studio Tools customizations for Microsoft Dynamics GP 2015. And yes, that includes .NET interoperability and Dexterity Services.

You know we are fun! So why not pop into our session? Just come have a blast and hopefully we can show you something new. No, no Visual Basic for Application (VBA) this time. In fact, we will even show you how to convert your Modifier with VBA customizations which will make you the talk of the nation.

Warning: this will not be a beginner's session, but it doesn't mean you can't come to it and get an appetite for what you can do when you reach the next level. Just don't give us a bad grade if something flies by you :-)

So what do you need to do? Well, for starters, complete your Convergence 2015 registration. If you register and come to our session we may even take a picture with you and make you famous. All kidding aside, we hope to see you in Atlanta.

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/

Wednesday, January 7, 2015

SOP Quick Print feature does not work when window ribbons are enabled

Happy New Year!! Hope all of you had a great time with family and friends and that you are back getting used to the daily grind once more.

Today, I want to kick off the year with an issue in Sales Transaction Entry window related to the cool ribbons implemented since Microsoft Dynamics GP 2013 R2. By now, you are probably getting used to the absolutely gorgeous user interface which features Microsoft Office style ribbons on every window. Furthermore, you probably already know that the use of such ribbons is actually customizable and in many ways optional - albeit being the default configuration - as described by fellow Microsoft Dynamics GP MVP, Leslie Vail in her article GP 2013 R2 Ribbons. As it turns out, there's a Dex.ini switch, EnableWCRibbons=FALSE, that controls whether ribbons are enabled within Microsoft Dynamics GP or not. When ribbons are enabled, users can further customize the appearance of the action pane or return to the traditional menu bar for each window.


User Preferences window

Yesteryear (2009), I wrote an article talking about The wonders of CTRL+Q: saving and printing SOP documents in one step and how the Quick Print feature made life easier to the poor souls out there who needed a quick shortcut to printing SOP documents from the Sales Transaction Entry window. In that article I detailed the mechanics behind the feature, written by my good friend David Musgrave.

As fortune would have it, when ribbons are enabled and you are either using the Action Pane or the Action Pane Strip layouts, the Quick Print feature does not work. However, if the User Preference is returned to Menu Bar (you will need to exit Dynamics GP and re-launch for the changes to take effect), the Quick Print option (and CTRL+Q keyboard combination) works just fine.

While clearly an inconvenience, this can hardly be labeled a bug since the feature is still present within the application when the Window Command Display setting is set to Menu Bar as part of the user preferences. It would be nice, however, to have this fixed for Dynamics GP in desktop client mode. I can see how this may or may not work under web client mode as the browser keyboard shortcut combinations take precedence over the application's shortcuts.

Until next post!

MG.-
Mariano Gomez, MVP
Intelligent Partnerships, LLC
http://www.intelligentpartnerships.com/