Monday, December 22, 2014

Second reason to attend Microsoft Dynamics Convergence 2015: OneRepublic



If you enjoyed the concert last year with Fun (see Microsoft Dynamics Convergence Atlanta 2014 - Day 3) you will be more than happy to know that OneRepublic -- not a typo -- has accepted Microsoft's invitation to entertain the attending Convergence 2015 crowd.  

OneRepublic - From left to right: Eddie Fisher, Zack Filkins, Ryan Tedder, Brent Kutzle, and Drew Brown

OneRepublic is an American pop rock band formed in 2002 by Ryan Tedder and Zack Filkins. Originally signed with Velvet Hammer, an outfit under the Columbia Records umbrella, they were dropped 2 months before the debut of their first album.

They successfully released their debut set Dreaming Out Loud in 2007. The album included the smash single “Apologize,” mixed by Timbaland, which shattered digital sales and airplay records worldwide and received a Grammy nomination. The band’s sophomore album, 2009’s Waking Up, produced three singles: “All the Right Moves,” “Secrets” and “Good Life.” OneRepublic released their third studio album, Native, in March 2013 where it debuted at No. 4 on the Billboard Top 200 chart. The set includes hits “If I Lose Myself,” “Feel Again,” “Counting Stars,” “Love Runs Out” and “I Lived.” OneRepublic spent most of 2014 on the road headlining their Native Summer Tour and touring Europe.

This is an inside look at Native Summer Tour.





So, what are you waiting on? Register now for Convergence 2015 and come enjoy a night out with one of today's hottest bands.

Until next post!

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

Thursday, December 18, 2014

First reason to attend Microsoft Dynamics Convergence 2015: Satya Nadella



It's that time of the year again. While we prepare to celebrate the holidays, be it Christmas, Hanukkah, Milad un Nabi, or simply enjoy a good time off with family and friends, it is also time to begin thinking about 2015.

The next major event in sight, of course, is Microsoft Dynamics Convergence 2015 Atlanta and who better to open the event that Microsoft's newly minted Chief Executive Officer, Satya Nadella.

Satya Nadella

Before being named CEO in February 2014, Nadella held leadership roles in both enterprise and consumer businesses across the company.

Joining Microsoft in 1992, he quickly became known as a leader who could span a breadth of technologies and businesses to transform some of Microsoft’s biggest product offerings.

Most recently, Nadella was executive vice president of Microsoft’s Cloud and Enterprise group. In this role he led the transformation to the cloud infrastructure and services business, which outperformed the market and took share from competition. Previously, Nadella led R&D for the Online Services Division and was vice president of the Microsoft Business Division.

Before joining Microsoft, Nadella was a member of the technology staff at Sun Microsystems. Originally from Hyderabad, India, Nadella lives in Bellevue, Wash. He earned a bachelor’s degree in electrical engineering from Mangalore University, a master’s degree in computer science from the University of Wisconsin – Milwaukee and a master’s degree in business administration from the University of Chicago. He is married and has three children.

Fun facts about Satya Nadella

1. The guy loves Cricket! He attributes his ability to work in a team and his team building spirit to the sport.

2. He is an avid computer-based training (CBT) student and does take online classes most every morning in a 15-minute window.

3. He's a family man at heart. He's been married for a little more than 22 years and has 3 kids.

4. Poetry is his thing. Likes American and Indian poetry.

5. He's just Microsoft's 3rd CEO, behind Bill Gates and Steve Ballmer.

*Fun facts courtesy of IndiaTimes.


So, what are you waiting on? Register now for Convergence and come enjoy an opening keynote session that will also feature the one and only Kirill Tatarinov, Executive VP of the Microsoft Business Solutions Group who in his own style will sure make you excited about the future.

Until next post!

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

Monday, December 15, 2014

Microsoft Dynamics GP backups with Windows Azure Blob Storage Service - Follow up

As a follow up to my post yesterday (see Microsoft Dynamics GP backups with Windows Azure Blob Storage Service), an issue has been identified with Microsoft Dynamics GP 2015 running on SQL Server 2014 when choosing Microsoft Azure storage as the destination for the backup.

You will receive the following warning message:

The SQL Server version that you are using does not support backing up or restoring your database from Microsoft Azure storage.



I have traced the issue back to the logic in the '(L) RGRestoreBackupOption' of window BackupRestore of form syBackupRestore field change script, which seems to compare the build number even after it has determined the version number is greater than SQL Server 2012 SP1 CU2 (11.0.3339). Of course, the build number for SQL Server 2014 CU4 is 12.0.2430. Since 2430 is not greater than 3339, the script sets the validation flag to false, causing the script to abort with the message indicated above.

This problem is exclusive to Microsoft Dynamics GP 2015 RTM (14.00.0524) running on SQL Server 2014, and cannot be replicated if you are running Microsoft Dynamics GP 2013 R2 or Microsoft Dynamics GP 2015 on SQL Server 2012 SP1 CU2 or greater. Microsoft is currently aware of this situation (at least via the Dynamics GP Online Partner Technical Community Forum), but if you are

For more information on SQL Server 2014 build numbers, see Microsoft Support kb article 2936603, SQL Server 2014 build versions.

Until next post!

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

Sunday, December 14, 2014

Microsoft Dynamics GP backups with Windows Azure Blob Storage Service

With the introduction of Dynamics GP 2013 R2, Microsoft delivered support for application database backups onto Windows Azure blob storage service from within GP itself.

Azure Blob storage is a service for storing large amounts of unstructured data, such as text or binary data, that can be accessed from anywhere in the world via HTTP or HTTPS. You can use Blob storage to expose data publicly to the world, or to store application data privately. Common uses of Blob storage include:

• Serving images or documents directly to a browser
• Storing files for distributed access
• Streaming video and audio
• Performing secure backup and disaster recovery
• Storing data for analysis by an on-premises or Azure-hosted service

In turn, Dynamics GP takes advantage of capabilities introduced in SQL Server 2012 SP1 CU2 to enable SQL Server backup and restore directly to the Windows Azure Blob service. See SQL Server Backup and Restore with Windows Azure Blob Storage Service for more information.

Note: Starting with SQL Server 2012 SP1 CU4, you can also use PowerShell to backup to and restore from Windows Azure Blob storage services.

As part of the backup and restore process, Microsoft Dynamics GP calls the syGPAzureBackupRestoreProcess system database stored procedure.


Configuring Microsoft Dynamics GP backups with Windows Azure Blog storage service

To take advantage of Windows Azure Blob storage service, you must begin by setting up an Azure storage account. The storage account is the starting point for all storage services. The storage account requirements are fairly straight forward: setup a URL prefix, associate a location or affinity group for your storage account, and determine the type of replication. See How To Manage Storage Accounts for additional information on replication options.

Note: The full URL will be the URL prefix followed by blob.core.windows.net.

Storage Account Setup
Upon creation of the storage account, the storage account name and its access key properties are required to authenticate to the Windows Azure Blob Storage service and its components.

Following the creation of the account, you will need a storage container. A container provides a grouping of a set of Blobs, and can store an unlimited number of Blobs. To write a SQL Server backup to the Windows Azure Blob service, you must have at least the root container created.

Container tab

Click on the Containers tab to setup a new container. Enter a name for the container, and select the type of access that will be provided to the container.


New Container setup
For more information on setting container access types, see Restrict Access to Containers and Blobs. Once the container has been setup, you should see your new container listed.

Container is now setup

Return to the storage account dashboard and click the Manage Access Keys option at the bottom of the window for the storage account you setup. You can copy the primary access key, which will be used to setup Microsoft Dynamics GP.

Manage Access Keys

In Microsoft Dynamics GP, go to Microsoft Dynamics GP | Maintenance | Backup to open the Back Up Company window. Follow these instructions:

1. Select the company you wish to backup
2. Choose Use Microsoft Azure storage as the destination for your backup
3. Enter the storage account name you created in Windows Azure
4. Paste the access key from the previous section.
5. Enter the URL to the container. The URL format is as follows:

https://storage-account.blob.core.windows.net/container-name


Back Up Company

6. Click on Verify account to validate your account settings and connectivity to the container then click OK to continue. The backup performance will depend on your internet connection speed.

Now that you have a pretty good grasp on the configuration, you can begin taking advantage of Windows Azure as a secure, always available option for your Microsoft Dynamics GP data. The best part is, the data geo-redundantly stored (if this option was selected when creating the storage account) and you no longer need to rely on tapes being exposed to damage.

Until next post!

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

Thursday, December 11, 2014

Microsoft Dynamics GP 2015 Developer's Preview: Wrap Up

It has been an exciting ride combing through the features and capabilities of the Microsoft Dynamics GP 2015 Service Based Architecture components, starting at the core with the new and enhanced .NET interoperability capabilities within Microsoft Dexterity, all the way to the new service base architecture foundation built into Microsoft Dynamics GP to expand the realm of integrations that can be accomplished in today's fast paced, application (Apps) dominated world, whether those applications are native to the Windows platform or cross-platform, whether they reside in the cloud or on premise, and regardless of the form factor.

I wanted to provide this single point of reference to reach all entries in the series, which saw 5 articles over the past 5 months.

Microsoft Dynamics GP 2015 Developer's Preview: Loading the VHD image - Part 1 (Aug 29, 2014)
Microsoft Dynamics GP 2015 Developer's Preview: Working with Sample URIs - Part 2 (Sep 24, 2014)
Microsoft Dynamics GP 2015 Developer's Preview: .NET Framework Interoperability - Part 3 (Oct 29, 2014)
Microsoft Dynamics GP 2015 Developer's Preview: Dexterity Service Patterns - Part 4 (Nov 25, 2014)
Microsoft Dynamics GP 2015 Developer's Preview: Dexterity Service Patterns - Part 5 (Dec 1, 2014)

Since Microsoft Dynamics GP 2015 is now available to the general public, my focus will turn to keeping you abreast of those application nuggets, point out any glaring issues or problems, and continue to work with the development community at large to maximize the technological foundations of the product.

In the future, you may see new series on this blog seeking to enhanced the product learning experience, so stay tuned.

Until next post!

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

Friday, December 5, 2014

Microsoft Dynamics GP 2015 RTM is now available


This week saw the release of Microsoft Dynamics GP 2015, six months after the release of Microsoft Dynamics GP 2013 R2. Dynamics GP 2015 introduces over 120 new features, all of which have been covered recently over at Inside Microsoft Dynamics GP, the official blog of the Microsoft Dynamics GP Product Management & Marketing teams.

This new release also introduces a first round of Service Based Architecture operations, geared toward enhancing the product integration capabilities, and the ability for developers to expand into areas such as mobile applications, cross-platform applications, cloud-based applications and services, among others.

At its core, developers will now enjoy the enhanced coding capabilities with the introduction of .NET interop in Microsoft Dexterity, the IDE used to build Dynamics GP.

For the IT director or manager, Microsoft Dynamics GP 2015 introduces single sign-on capabilities offered via Windows Azure Active Directory, yet reinforcing Microsoft's commitment to the cloud.

PartnerSource

CustomerSource
Here are links for the articles about the release:

Inside Microsoft Dynamics GP

Dynamics GP Support and Services Blog
Winthrop Development Consultants (David Musgrave)

ERP Software Blog

Microsoft Dynamics GP Administrator
Dynamics GP Essentials
Dynamics GP – Learn & Discuss
Azurecurve

For questions about upgrading to Microsoft Dynamics GP 2015, please contact me for a free consultation or use the comment section provided with this article.

Until next post!

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

Monday, December 1, 2014

Microsoft Dynamics GP 2015 Developer's Preview: Dexterity Service Patterns - Part 5


In my previous article (see Microsoft Dynamics GP 2015 Developer's Preview: Dexterity Service Patterns - Part 4), we discussed the merits of the Wrapped Window pattern and how it can save time by avoiding refactoring of complex business logic embedded on Dexterity forms. I also provided an intro on the Decoupled Logic pattern and why this is the preferred method for exposing Dexterity services as it provides the best performance. However, we also came to the conclusion that refactoring is only feasible in cases where decoupling the business logic from the UI will yield a reasonably increase in performance, without negatively impacting development and product release timelines.

We also looked into the Decoupled Logic pattern considerations and today we will accompany these with sample code to clarify the meaning of each.

Decoupled Logic Considerations
  • In decoupled logic mode, there is no implicit data types validation or conversion. Unlike the Window Wrapped pattern where the map statement manages casing, signed versus unsigned precision, and nulls during the binding of window fields to our instantiated class properties; in the Decoupled Logic pattern we must perform all the conversion and validations.
     
  • Check for valid value for decimals
(Click to enlarge)
     

  • Check for a valid value for a drop-down or radio group
(Click to enlarge)
     
  • Force strings to upper case as needed, for example, items, customers, vendors, etc. (see first example).
  • Set default values as needed as user may pass a null value as a parameter to a service procedure
    

There you have it! Working with services and .NET interop is quite frankly not that complicated so long you understand the patterns and some of the rules governing them. So finally, we will put this all together in a final installment that will complete this series.

Until next post!

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

Tuesday, November 25, 2014

Working with Dex.ini Settings to customize the Microsoft Dynamics GP Connect gadget

I take a pause in my Microsoft Dynamics GP 2015 Developer's preview series to bring something fun before the Thanksgiving holiday here in the United States. Hopefully you find this trick very cool and enjoy it in your workplace.


Have you ever wanted to wake up with The Dynamics GP Blogster page as the centerpiece of your Microsoft Dynamics GP application homepage? Or how about your favorite online news outlet? What if you just want to display your company web page or an intranet portal to allow employees to update their information or view the latest company news?

Today I will show you how to take advantage of two obscure Dex.ini settings to customize the Connect gadget.

The standard Connect gadget displays Microsoft Dynamics Community news and updates, but there are two Dex.ini keys used to enable runtime debugging of the Connect gadget. One of the Dex.ini keys turns on the debugging feature and the other allows you to specify a URL to be displayed. The keys are:

DebugConnect=TRUE
ConnectTestURL=http://dynamicsgpblogster.blogspot.com

If you add these two keys to your Dex.ini file and re-launch Microsoft Dynamics GP the result will jump right at you.

Customized Connect Gadget

I also noticed that if the customized URL contains videos, these will play fine within the Connect gadget. How about that for some educational YouTube videos from the Microsoft Dynamics Channel? I tested it in the Web Client and it also worked just fine.

Please send in your comments as I would like to hear how you plan to use these new settings. Also remember, if you are using the Support Debugging Tool, you can roll out the settings to every user without having to visit their workstations.



Take a look at the following related articles:

Working with the Dex.ini Settings in Microsoft Dynamics GP 2013
More DEX.INI Settings!

Until next post!

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

Microsoft Dynamics GP 2015 Developer's Preview: Dexterity Service Patterns - Part 4

What a week of learning that reIMAGINE 2014 conference was! If you stayed for the post conference training classes, even more power to you.

In my previous article (see Microsoft Dynamics GP 2015 Developer's Preview: .NET Framework Interoperability - Part 3), I talked about the .NET interop capabilities introduced in this iteration of Dexterity and how these new capabilities have become the foundation for unlimited extensibility options for Dexterity-based applications. Today, I wanted to talk about another aspect brought by .NET interop: Dexterity services. However, to understand Dexterity services, we must first take a look at the service implementation patterns.

Wrapped Window Pattern

Under the wrapped window pattern,  a complete Dexterity form or window logic is wrapped into a service. The goal is to instrument the user interface and leverage all the existing validation logic within a RESTful service as to avoid recreating that same logic separately -- similar to the behavior displayed by the Web Client.

Wrapped Window Pattern (click on image to enlarge)

A closer to home example is how Integration Manager's standard adapter leverages the UI to get data into Microsoft Dynamics GP.

Wrapped Window Pattern Considerations

Create .NET object
The basic idea here is to leverage .NET to create a class library with all the properties reflected by the associated Dexterity table, i.e., RM_Customer_MSTR, then expose that class to your Dexterity application (via .NET interop). You can then instantiate that class in Dexterity to map the UI fields to the instantiated class properties. Here are some basic steps to follow:
  • Include all fields from table as part of the .NET class 
  • Remove white spaces from names, i.e., 'Customer Number' should be defined as CustomerNumber within the .NET class 
  • Create enumerations for radio groups and drop down lists

Preparation for window being wrapped
What we are trying to do in this instance is, identify all modal dialog elements in our code that may require branching logic for when our application is running in service mode, finding an effective way to handle these.
  • Handle calls to Warning_Dialogs by evaluating service mode state with IsServiceMode() function.
    Warning_Dialogs handling
  • Ask messages for actions need a predetermined action 
    Ask() function
  • On-the-fly record events cannot be performed . When in service mode, if the record is not found, a trace event is created.
Ask() on-the-fly record add
  • TraceAdd and Trace are used to report service events to calling applications or services.

Decoupled Logic Pattern

The Decoupled Logic pattern exposes Dexterity procedures and functions as a service, this is, the business logic does not reside in a form. Under this approach, the objective is to separate the business logic from the user interface. Since we are dealing with procedures and not the user interface, the decoupled logic pattern can be considerably faster from a service performance perspective.

Decoupled Logic Pattern (click on image to enlarge)

Using our closer to home example, think of Integration Manager's eConnect adapter, which leverages the eConnect assembly and stored procedures to bypass the user interface. At the same time, this is a prime example as to why you want to find a Dexterity pattern approach that's suitable for creating a service -- you may not want to have to refactor the entire UI, depending on the complexity of the UI validations. Key points in determining whether to refactor the UI or not are the frequency of use of the UI in question and performance of the UI code.

Decoupled Logic Considerations

  • In decoupled logic mode, there is no implicit data types validation or conversion. Unlike the Window Wrapped pattern where the map statement manages casing, signed versus unsigned precision, and nulls during the binding of window fields to our instantiated class properties; in the Decoupled Logic pattern we must perform all the conversion and validations.
  • Check for valid value for decimals
  • Check for a valid value for a drop-down or radio group
  • Force strings to upper case as needed, for example, items, customers, vendors, etc.
  • Set default values as needed as user may pass a null value as a parameter to a service procedure

In the interest of clarity (and space), I will tackle some decoupled logic sample code in a follow up article.

Until next post!

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

Wednesday, November 19, 2014

Microsoft #reIMAGINE 2014 Conference - Wrap Up!

November 13, 2014

After a good 3 days of conference sessions (both attending and delivering), I have to say this event has been very special to me. Being able to catch up - yes, catch up! - with old (and not so old) time friends is probably one of the best experiences of this particular reIMAGINE 2014 event.

At Hector International Airport (FAR) Gate 1
As I sat at Gate 1 at Hector International Airport, looking out at the snow dusting collected on the tarmac (a stark reminder as to why I don't live in these latitudes), I reflect back on days past to highlight the following:

1. You MUST begin learning about Service-Based Architecture in general, now! The truth is, I spoke to numerous developers during this event and the one question that kept coming up was, "Where do I go to learn all this stuff?". It took me some time to get acclimated to these style of services, but frankly, you need to build on your past experience. After all the current Web Services model (SOAP based), while different from the new one (REST based) still offers some of the underpinning architectural elements. If you are a newcomer to the game, then the MSDN library offers quite a few good primers on REST based services. One of my favorites is An Introduction To RESTful Services With WCF by Jon Flanders. In subsequent days, I will be posting a number of articles on the Dexterity service patterns and their implementation.

2. The Microsoft Dynamics GP partner community is alive and well, thank you! It's no coincidence that this event drew close to 500 partners and ISVs. The question that still lingers in my mind is, why not more? These events are not all about the kumbaya and to be honest, the wealth of information is simply overwhelming at times and I'm surprised that, despite the number of attendees, more partners are not taking advantage of the learning opportunities. I am willing to wage a bet: if we get to double the registration for next reIMAGINE chances are this event will need to move to another city not named Fargo as there may not be any venues large enough to host such crowd.

3. The jury is still out on who throws the best event parties, but I must say there are only two clear competitors, so far: FastPath and eOne Solutions. If I'm going to be put in a position to choose... you know what? I will just continue to enjoy the parties, so go on boys and girls! Just let me know when and where I must show up to the next one.

4. Last but not least, this partnership between Microsoft and Dynamic Communities is probably the best darn thing to happen to the Dynamics GP ecosystem after Microsoft's acquisition of Great Plains Software. With Microsoft technologies and products and Dynamic Communities understanding of the user and partner ecosystem, these events just seem to have been catapulted to another level. What I would like to see is more collaboration at the session level, between Microsoft Dynamics GP development team members and partners. It would make for a very interesting perspective, from both the technical and the practical applications of the technology.

I also wanted to thank each and every single person that made this event possible - you know who you are! It's (fairly) easy to show up to these events as an attendee and sometimes as a presenter, but putting a partner event together is no easy feat, so kudos to the Microsoft Dynamics GP Product Management and Product Development teams and the Dynamic Communities team for a great event.


Coverage from this event appears in the following posts:

Microsoft #reIMAGINE 2014 Conference - Getting Here
Microsoft #reIMAGINE 2014 Conference - Day 1
Microsoft #reIMAGINE 2014 Conference - Day 2
Microsoft #reIMAGINE 2014 Conference - Day 3

Conference material can be downloaded from

http://1drv.ms/1xQMLlD


See everyone at Microsoft Convergence 2015 Atlanta, my backyard. Register now to take advantage of the early registration rates and get some great accommodations here in town.

Until next post!

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