Showing posts with label Dynamics GP 2013. Show all posts
Showing posts with label Dynamics GP 2013. Show all posts

Tuesday, August 19, 2014

Microsoft Dynamics GP 2013 R2 Installation: Utilities changes

When executing Dynamics Utilities for a brand new installation of Microsoft Dynamics GP 2013 R2 you may have noticed a new window in the guiding wizard. This window is the Web Client SQL Server Login window, which allows you to specify a common SQL account that will be created during the system database setup process.

Web Client SQL Server Login window

In GP 2013 R2, users accessing the web client exclusively no longer require a SQL account to access the underlying data in the system and company databases they have been assigned to. However, their Active Directory credentials must be associated to their Microsoft Dynamics GP account (stored in the Users Master table (SY01400). Access to data is afforded via a common SQL Server login once the Active Directory credentials and the Microsoft Dynamics GP user credentials have been validated. This provides users with a single sign-on experience from the web client.


User Setup

The above is described in more detail by Jason Lech, Escalation Engineer at Microsoft in his article on Identity Management.

Until next post!

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

Wednesday, August 6, 2014

Deploying Business Analyzer Companion App Services on Windows Azure Service Bus

Business Analyzer App for Windows 8.1

If you are not using Business Analyzer today, shame on you. Last year sometimes I wrote a small article on how to deploy the Business Analyzer Windows 8 application on a personal laptop, which is typically how most of us road warriors need it to be for demo purposes. However, here at Intelligent Partnerships, we've changed our approach a bit: all our infrastructure and demo environments now reside on Windows Azure, which gives all of our people the flexibility of having a single environment and consistent across the board, while allowing our accounting staff to do work from anywhere in the world.


Today, I want to talk about another one of those cool features in Windows Azure: The Azure Service Bus and how you can leverage it to run the Business Analyzer app for Windows 8.1.

I really don't like to oversimplify anything, but think of Azure Service Bus as cloud based message queuing system, akin to MSMQ, but running on a much more robust platform. The advantage is that applications are no longer bound by myriads of layers (like firewalls, complex authentication, etc.) to communicate with each other and can reside anywhere and on any device that can communicate to the Internet.

So let's get started...

1. To setup a Service Bus you sign into Azure's management portal, then click on the Service Bus option on the left navigation bar.

Service Bus service
2. Click the Create button to add a namespace for your service bus. The namespace identifies the service in Windows Azure and is assigned an address. You can then choose the region where your service will be hosted.

Service bus namespace

By clicking the Ok button, Windows Azure proceeds to activate that namespace if it's available. If it's not available, you will be prompted to enter a new namespace, before you can continue.

3. You can then proceed to install Business Analyzer Companion App Services on one of your virtual machines (preferably not your SQL Server). The installation is straight forward and all you need to do prior to running the setup executable program (setup.exe) is to install the reporting services configuration reports for Business Analyzer. Those are provided in the Companion App services SSRS zip file (MDGP2013_CompanionAppServices_SSRS.zip).

4. Once the Companion App Services application is installed, you can proceed to launch the configuration app, which can typically be found in the C:\Program Files\Microsoft Dynamics\GP Companion App Services\ folder.

Welcome screen
The Welcome screen displays the Companion App Service current connection information, which should later on be replaced by the settings you establish for this instance.

5. After the Welcome screen, you are presented with the Windows Azure configuration screen.

Windows Azure Service Bus Configuration window
In this window you will enter information about the Service Bus you previously configured using the Azure management portal. For the most part you specify the namespace, issuer, and issuer key which can be found


Service Bus connection information
Note the default issuer and default key must match the issuer name and issuer key, respectively, in the Azure configuration window. Click Next to continue - you will experience a short delay while the wizard validates the Azure service bus information you provided.

6. On the Host Configuration screen you can enter the host name and port of the machine that's going to be running the service - typically, just accept the default port. The beauty here is, since we already configured access via the Azure service bus, it's not necessary to expose the public name (server.cloudapp.net) of the host and create an end-point for the port, thus exposing our servers to the world - this is why we created the service bus to begin with!



7. Next on is to select the Companion Apps that will be used with the service. You will want to mark both of them here.

Select Applications

8. You will then want to choose the Data Connections to use with Companion App Services. In this case you have a choice of either Excel Reports or SQL Server Reporting Services reports.

Data Connections
9. Next you must identify where to find the Excel reports using UNC path to specify the folder. My reports happen to be at \\servername\gpfiles\excel reports\reports.

Shared Excel Reports folder

10. You are now asked to enter the address to Report Server and specify a folder where the reports can be found, if you happen to have multiple instances of GP deployed.


If you have deployed SharePoint Integrated mode, then click the checkmark and specify the library address for the reports.

11. Once the report server information is validated, you will receive a confirmation page with the address to be used when configuring the Business Analyzer application.

Configuration Complete window
The address we are particularly interested in is the Service Bus address, which in this case is simply ip-contoso. (with the period at the end).

12. Open the Business Analyzer application, the go to the Configuration window from the Charms on the right. You can then enter the ip.contoso. address in the service configuration.

Business Analyzer Configuration

Sweet! Now, we have configured BA without really exposing the public address of our Azure VM, which should make system administrators very happy.

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

Monday, August 4, 2014

Implementing a Windows Azure Site-To-Site VPN

Hi everyone! I'm back! The past few months have seen an increase in projects here at Intelligent Partnerships so I have been shouldering some very challenging projects involving some very complex integrations. Thank goodness for eOne Business Solutions' SmartConnect and SmartPost products which have made for some very happy customers and some extremely robust integrations. In addition, I've been working on quite a bit of customizations migration from Visual Basic for Applications (VBA) to some cool hybrid solutions using Microsoft Dexterity and Visual Studio Tools (VST) for Microsoft Dynamics GP. If you remember, I was one of the pioneers of the technique to replace VBA customizations for hybrid Modifier and Visual Studio Tools. You can read more about this technique in the articles:

Hybrid development for the Managed Code developer
Hybrid development for the Managed Code developer (cont.)


Well, today I wanted to talk about Microsoft Azure Virtual Networks and specifically, the steps needed to setup a Site-to-Site VPN between your Windows Azure virtual network and your Local Area Network.

As you may recall from previous articles I've written on the subject of deploying Microsoft Dynamics GP on Windows Azure, a pre-requisite step before provisioning the VMs that will host SQL Server and your Microsoft Dynamics GP application is to provision and configure a Virtual Network, to be used to communicate the VMs. Also, if you are not going to have your Azure virtual network talk to your on premise LAN, chances are you also need to provision a VM to run Active Directory Services and Domain Name System (DNS) for name resolution - I guess, the typical networking stuff.

As with everything else, life is never this ideal, and most organizations have an on premise AD DC and DNS already in place, so the question is "Why can't we simply use Azure as an extension of our network without having to provision these additional services?" The answer is, of course, you can!

To make the setup process happen smoothly, you must first have the following information at hand:

1. IP address and name of your DNS server
2. Internet facing address of your VPN server or appliance
3. Address space and subnet masks for your local area network (in layman's terms, the range of IPs covered by your TCP/IP network)
4. Optional: Address space you want to use to setup your Azure virtual network.
5. An AD account with privileges to join computers to the domain

To get started, logon to the Windows Azure management portal (http://manage.windowsazure.com). Once in the management portal follow these steps:

1. The first task at hand is to identify our on premise network. Click on the Network Services and Local Network to define your on premise network. Once on the page, click on Add a Local Network.


On premise Network (LAN) setup

2. For this example, we will call the network CONTOSO-ONPREM. You will be asked to enter the public IP address for the VPN. For this example, our CONTOSO-ONPREM network's can be reached at 200.100.50.1. Click the checkmark to proceed to the next screen.

LAN details

Note that this is simply an Azure identifier for your on premise network and not necessarily the actual physical name of it.

3. Now, you must define the range of valid IPs of your on premise LAN. Particularly important here is to know the starting IP address of the on premise network and the Classless Inter-Domain Routing (CIDR) method use for IP address allocation.

Address space

We will assume the CONTOSO-ONPREM routing prefix is 192.168.1.1 and that the usable address range is anywhere from 192.168.1.0 to 192.168.1.255 which gives us a subnet mask of 255.255.255.0 (or 24 "1" bits). Please consult with your on premise network administrator if unsure.

4. Once the on premise network has been defined, you can proceed to register the DNS server for by clicking on the DNS Servers option or clicking the +NEW action button on the lower left corner of the portal.

DNS Server registration

In our example, the CONTOSO-ONPREM DNS server can be found at 192.168.1.20. My preference is simply to assign the FQDN name of the DNS server, though, again, this is just used in Azure to identify the object and rather not necessarily related to the domain name of the machine.

5. Provision virtual network. For our example, we will call this network CONTOSO-AZURE.


CONTOSO-AZURE network provisioning
We can the click next to continue. In the next page of the network provisioning, you will be asked to identify the DNS server and establish the VPN connection to the on premise network.


Azure does a pretty cool job at showing a graphical representation of what you are configuring. In the next page, you can pretty much setup your address spaces and subnet masks. However you must add a subnet mask for your Azure gateway, by clicking the Add Subnet button.



For the purpose of our example, our Gateway IP address will be 10.32.0.0.

Click ok to continue.

6. Azure will now provision the network and make the setup based on the choices you selected. Once the network is provisioned, you can now go to the Dashboard and should see the following:


7. Next steps now involve setting up the VPN tunnel on your firewall to communicate to the Azure gateway.  For this you have a choice of downloading a number of ready to go VPN device scripts (supported devices include Cisco, Juniper, and software-based as Microsoft's). If you cannot find your specific device, it's always good to do a search over the Internet as someone has probably already figured out some configuration for the specific model you have. Important as well is to record the Azure network key, which you will need when setting your VPN.

Once you have established connectivity with your on premise VPN, you can begin provisioning your VMs, making sure you select your virtual network in the process.

Hopefully you found this article useful now that Azure is becoming more and more a choice for hosting Microsoft Dynamics GP.

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

Monday, May 19, 2014

"Invalid Object Name ..SY01500" error after restoring GP 2013 company database in a different environment

Just recently I was working with a partner to determine the root cause of an issue that stemmed from restoring a company database from a customer's production environment, to the partner's development environment.

After restoring the database, we could see the following error messages attempting to access the database:

Invalid object name SY01500 error

smCleanupFilesBeforeLogin stored procedure error

Login failed error

Enabling a DEXSQL.LOG gave us more insight into the issue. We could see the following prepared statement being executed prior to the ODBC error message:

/*  Date: 05/18/2014  Time: 19:55:37
stmt(148745784):*/
BEGIN DECLARE @stored_proc_name char(34) DECLARE @retstat int DECLARE @param5 tinyint DECLARE @param6 smallint DECLARE @param7 tinyint DECLARE @param8 tinyint DECLARE @param9 tinyint DECLARE @param10 tinyint DECLARE @param11 tinyint DECLARE @param12 int set nocount on SELECT @param5 = 0 SELECT @stored_proc_name = 'ZBPI.dbo.smCleanupFilesBeforeLogin' EXEC @retstat = @stored_proc_name 5, 'sa', 'Company_Name', 0, @param5 OUT, @param6 OUT, @param7 OUT, @param8 OUT, @param9 OUT, @param10 OUT, @param11 OUT, @param12 OUT SELECT @retstat, @param5, @param6, @param7, @param8, @param9, @param10, @param11, @param12 set nocount on END
/*
/*  Date: 05/18/2014  Time: 19:55:37
SQLSTATE:(S0002) Native Err:(208) stmt(148745784):*/
[Microsoft][SQL Server Native Client 10.0][SQL Server]Invalid object name 'DYNGP2013..SY01500'.*/
/*


The prepared statement calls the dbo.smCleanupFilesBeforeLoging stored procedure, which has (68) hardcoded references to the former system database in the old environment. A look at the SY00100 table, confirmed the backup had been taken from an environment with a different system database name.

We had to formulate a plan of attack to address the issue, so we decided for a two step approach which involves:

a) Updating the SY00100 table to reflect the current system database, and

b) Execute the Database Maintenance utility to rebuild all stored procedures and functions, triggers, and views for all products installed in the environment - more about Database Maintenance utility here. After all, they certainly would be other objects referencing the former system database.

This approach resolved the issue completely and the partner could now access the company database in their development environment without having to restore the customer's system database as well.

Until next post!

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


Tuesday, May 13, 2014

Working with the Dex.ini Settings in Microsoft Dynamics GP 2013

Dex.ini settings have always existed to provide developers and end-users with ways to set a number of preferences for their Microsoft Dynamics GP application without the need of additional development or customizations. With the release of Microsoft Dynamics GP 2013 and the web client, the Dex.ini now plays a key role in enabling (or disabling) certain elements rooted in the system's architecture itself. Today, I will address 3 new Dex.ini keys that will assist every day system administrators, developers, and hosting partners in managing their Microsoft Dynamics GP 2013 environment.


Per-User Dex.ini

With the introduction of the web client in Microsoft Dynamics GP 2013, the development team needed to make a few changes to how the Dex.ini file is handled. The result is a launch Dex.ini file (or global Dex.ini) that contains the settings necessary to get the user connected to Microsoft Dynamics GP; and a user-specific Dex.ini file that contains the user settings used after a successful connection has been established. The settings in the user Dex.ini are persisted in the Microsoft Dynamics GP system database (SY01405 - syUserDexIniSettings) so the next time they log into the system, the user Dex.ini file can be created with “their” settings. This functionality also works well in a Remote Desktop Services (aka Terminal Server) configuration where multiple users are sharing a single GP client installation.

NOTE: Traditionally, the Dex.ini file would be copied to the user profile folder to have user-specific Dex.ini settings. With Microsoft Dynamics GP 2013, this is no longer necessary.

This functionality is enabled via a Dex.ini switch in the launch Dex.ini files. (i.e. The Dex.ini used to launch GP, by default the one in the installation directory’s Data folder.)

EnablePerUserIni=TRUE

The switch is set to TRUE by default when installing the Web Client Runtime components during the Microsoft Dynamics GP 2013 installation. It can be enabled in a Remote Desktop Services (RDS) environment by editing the launch Dex.ini file and setting the switch to TRUE,

From an Independent Software Vendor (ISV) perspective, if your Dexterity application uses the Dex.ini file, you will now have a new optional parameter to choose what file you want to access via the Defaults_Read() and Defaults_Write() functions. You can then read or define if whether a setting is a global (launch Dex.ini) or per-user setting. The default is per-user if not defined, with a fallback to read or write from/to the global Dex.ini.

NOTE: If you are a Visual Studio Tools developer, you can access the Default_Read() and Default_Write() functions through the DexDefaultsRead() and DexDefaultsWrite() helper functions provided, respectively. You can read more about the helper functions library here on MSDN.

Suppressing the Server Data Source Drop-Down

In addition to the above changes released with the RTM version of Microsoft Dynamics GP 2013, a couple of other Dex.ini changes were added in Microsoft Dynamics GP 2013 SP2 (12.00.1482) to better support shared environments - a shared environment being one in which a single instance of the Microsoft Dynamics GP client is being used by multiple users or one in which there are multiple tenants/customers sharing a server.

The first change was added primarily for service providers that have multiple customers sharing Windows servers. In this situation the server could have data sources for multiple customers and you won't want user's from customer A seeing the data sources for customer B. In this case you can add the following switch to the launch Dex.ini that will default the data source field to the value from the Dex.ini and disable it.

EnableServerDropDown=FALSE

Suppressing the Last User in the System

The second change was added for RDS environments where multiple users are sharing the same Microsoft Dynamics GP instance and you don't want the user name of the last user to successfully login to default into the field. In this case you can add the following switch to the launch dex.ini that will not default in the last user name.

DefaultLastUser=FALSE

If you are interested in reading more about Dex.ini settings, please visit MVP Leslie Vail's blog and read her article Dex.ini switches – my complete list!. Leslie has worked hard to build this list over the years.


Special thanks to Daryl Anderson, Sr. Program Manager in Microsoft in Fargo for providing the base content for this article. Daryl is heavily vested with web client deployments on Windows Azure and have written most of the materials and "how to" topics for deploying web client on the Azure platform.

Until next post!

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

Friday, May 2, 2014

KB Article 878449 Capture Login script gets a much needed rehaul

We live by it, we die by it. KB article 878449, How to transfer an existing Microsoft Dynamics GP, Microsoft Small Business Financials, or Microsoft Small Business Manager installation to a new server that is running Microsoft SQL Server (KB 878449), is perhaps one of the most visited articles in the Microsoft Dynamics GP world, especially around upgrades. The article contains a script that, under normal circumstances, retrieves all the security principals and encrypted passwords on an existing Microsoft SQL Server. The result is a T-SQL script that allows you to restore those security principals on another Microsoft SQL Server.

Months aback I had seen numerous posts on the partner forum and the Microsoft Dynamics GP community where folks expressed having issues with the Capture Logins script on SQL Server 2012. Now David Musgrave over at the Developing for Dynamics GP blog has a definitive and answer and a solution to the problem and explains in great detail the issue experienced by many in his article Capture Logins Script from KB 878449 generates Invalid object name error.

Don't miss out on this article.

Until next post!

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

Monday, March 31, 2014

Microsoft Dynamics GP 2013 Virtual Machine image from the Windows Azure Gallery

Part 2/2 - The Experience

In my previous article, Part 1 of the series, I talked about provisioning a Microsoft Dynamics GP 2013 development environment from the Windows Azure gallery. If you are already an MSDN subscriber and are already taking advantage of Azure, there isn't much new to you as far as provisioning a VM from the gallery goes.

Microsoft Dynamics GP 2013 VM image

One of the first things you will notice on the desktop are shortcuts to Microsoft Dexterity, Microsoft Dynamics, Visual Studio Base Image Icons, a link to the Getting Started with the Microsoft Dynamics GP 2013 Developer Image, and Visual Studio 2013 Premium Edition.

I started out by loading the Getting Started help file, which contains tons of information on all the development tools installed and links to resources. I then proceeded to open Visual Studio 2013, which of course, went through the traditional and lengthy initialization process after entering my Microsoft Account information. At the end, however, I was able to validate that both the Microsoft Dynamics GP Add-In and Microsoft Dynamics GP Web Client Add-In projects were available to begin a Visual Studio Tools project if needed.

Next, I launched Microsoft Dynamics GP 2013 (12.00.1482) and was quickly faced with the login window. I figured the much needed sa password could be find in the Machine Configuration section of the help file provided and sure was. However, I was also disappointed to know that this image is delivered with Microsoft SQL Server Express 2012. Nonetheless, I reminded myself this is a development environment. Unfortunately, the SQL Server Express provisioning script did not incorporate the Advanced Services tools which leaves you without SQL Server Management Studio Express.

If you need to add other Microsoft Dynamics GP components or even the SQL Server Express tools (like Management Studio), you can find the media under the C:\ConfigureDeveloperDesktop\Software folder. There's media for Microsoft Dynamics GP 2013 with SP2, Microsoft SQL Server Express 2012, and Workflow for Microsoft Dynamics GP 2013.

There C:\ConfigureDeveloperDesktop folder also contains a Script folder. In this folder you can find some batch files and PowerShells scripts to deploy the web client and configure additional environment components. Be sure to follow the instructions provided in the Getting Started help file before you attempt to run any of these.

Batch Files and PowerShell scritps

NOTE: you can always add the local SQL Server Database Engine to Visual Studio and build queries using the Visual Studio editor.

To develop eConnect or Web Services for Microsoft Dynamics GP-based integrating applications, you will need to run the ConfigureGPWebServices script in the ConfigureDeveloperDesktop\Scripts folder on the desktop. This script will install and configure the eConnect for Microsoft Dynamics GP and Web Services for Microsoft Dynamics GP components as these are dependent on machine and domain information.

The script for provisioning Microsoft Dynamics GP Web Client is in the C:\ConfigureDeveloperDesktop\Scripts folder. Running the ConfigureGPWebClient script will complete the installation of the web client to the point where you need to run the Microsoft Dynamics GP Web Client Configuration Wizard to compete the configuration. The Microsoft Dynamics GP Web Client Configuration Wizard can be launched from a shortcut on the start screen. The configuration wizard will ask for connection information to the SQL Express instance and then create the databases.

The web client script will create a self-signed security certificate for configuring the web client for SSL communication. To access the web client…

1.      Launch internet explorer and type the following URL, replacing with the name you provided for the virtual machine. (https:///GP) 

2.      You will be asked for credentials to log in. Type in the name and password of the machine administrator account you were logged in with when running the ConfigureGPWebClient script.

To be frank, the Developer's VM image is well stacked and provides all the goodies you will ever need for development purposes. The most important thing to keep in mind is, this is hosted on Windows Azure and as such your disaster/recovery redundancy is unparalleled by anything you have on premise. Think about moving your demo and dev environments to the Windows Azure platform as this will probably be the replacement of the famous Hyper-V images previously delivered via PartnerSource.

Until next post!

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

Thursday, March 27, 2014

Microsoft Dynamics GP 2013 Virtual Machine image from the Windows Azure Gallery

Part 1/2 - The Provisioning Process


A few days aback, the Microsoft Dynamics GP product management team announced the availability of Microsoft Dynamics GP 2013 from the Windows Azure gallery. You can read more about it on the Inside Microsoft Dynamics GP blog:

Microsoft Dynamics GP 2013 image available in the Azure Gallery

The image is available exclusively to MSDN subscribers, which means it's only slated for development and maybe even demo purposes. You can find more information and download some Word documents to assist with the configuration process directly from PartnerSource with the link provided below.

PartnerSource: Microsoft Dynamics GP 2013 image available in the Azure Gallery

Since I am an MSDN subscriber courtesy of the Microsoft MVP Award Program, I thought I would dive into the process of provisioning a Microsoft Dynamics GP 2013 virtual machine (VM) and walk through some of the things I found in the process - back in January of 2013, I explained the Windows Azure subscription process. The process may or may have not changed much since then, but if you are an MSDN subscriber, all you need to do is activate your benefits by going to the Windows Azure website.

1. Once your benefits are active, you will need to go to the Windows Azure management portal - for obvious reasons, I have obfuscated my VM and cloud services names.

Windows Azure management portal
2. Click the +NEW button on the lower left hand side of the window, then select Compute | Virtual Machine  | From Gallery to begin the provisioning process.

Virtual Machine Gallery option

3. Locate the Microsoft Dynamics GP 2013 Developer image from the Dynamics gallery under the Microsoft section. To note, you can also provision a Microsoft Dynamics NAV 2013 R2 image as well.

Microsoft Dynamics GP 2013 Developer
The excerpt from the image description is as follows:

The Microsoft Dynamics GP 2013 Developer image is an offering exclusive to MSDN subscribers. The image includes a pre-configured environment for building integrations and customizations for Microsoft Dynamics GP 2013. The image includes the same software as the Visual Studio Premium 2013 gallery image. In addition, it has the Microsoft Dynamics GP 2013 software components, including Microsoft Dynamics GP, Microsoft Dynamics GP SDK, Dexterity for Microsoft Dynamics GP, and Visual Studio Tools for Microsoft Dynamics GP. The image also contains configuration scripts for installing Microsoft Dynamics GP Web Client and Web Services for Microsoft Dynamics GP. Refer to the "Getting started with the Microsoft Dynamics GP Developer Image" link on the desktop for additional information. 

As a developer, you get all the goodies you can possibly dream of to dive into a development project, including Visual Studio Premium 2013. Also, once the provisioning process is complete, you can access the VM and read further instructions with a link provided on the desktop.

4. When you click the next button you will then be taken to the Virtual Machine Configuration screen, where you can enter the name and a local admin user and password for the Microsoft Dynamics GP 2013 VM. You are also asked to size the VM, for which there are no clear instructions. Given the amount of software that will be running on this VM (GP, SQL Server, Visual Studio, etc.), I figure a large size (4 cores, 7 GB memory) should be good enough to start out.

Virtual Machine Configuration
5. The next step walks you through setting up the cloud service information, DSN, region, storage account information and availability set. If you are not familiar with any of these terms, please refer to the Windows Azure Documentation website. If you already have a virtual network as well, you may need to consult with your network administrator before you can continue.

Cloud Service
6. The final step will prompt for the installation of the VM Agent and the end-points you will want to create to access any service or application from the Internet. The VM Agent allows you to recover passwords and the likes in case you forget.

VM Agent and Endpoints

7. After submitting the configuration, the provisioning process begins.

Provisioning process

Tomorrow, we will explore the VM image a bit more and walk through some of the documentation available to developers.

Until next post!

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

Wednesday, December 11, 2013

Web Client Wednesday - The Lingo

Microsoft Dynamics GP 2013 web client introduces new terms beyond your traditional "Launch File" and "Settings File", and though these two terms still exist, the list has just got a bit longer. Most of the terms in this list identify web client architecture components. Other terms simply identify technology stack elements. However, familiarity with all these terms, components, and their relationships is a must if you are a technical/implementation consultant or IT director looking to understand what is going to take to deploy the environment.

Active Directory Certificate Services
Certificate Authority
Certificate Store
Dynamic Form Rendering
Fiddler Trace
GPWeb
HTTP Activation
HTTPS Binding
Last Heatbeat
Multi-tenancy
Named System Database
NETSH
Potential Sessions Remaining
Rendering Engine
Runtime Service
Security Token
Self-Signed Certificate
Session Central Service
Session Host
Session Management Proxy Service
Session Monitor
Session Service
Silverlight
Silverlight App
Silverlight Canvas
Silverlight Certificates
Silverlight Snap-In
SSL Certificate
Tenant Discovery Service
Tenant Management Proxy Service
Tenant Management Service
TrustedApp msi
Web Client Diagnostics
Web Client Runtime
Web Management Console
Wildcard Certificate
WCF Endpoint
WCF Service

Here's a list of resources that deal with all these terms and what they mean:

Dynamics GP 2013 Web Client Infrastructure Overview, Aaron Donat @ Developing for Dynamics GP
Microsoft Dynamics GP Web Client and Silverlight Security Requirements, Aaron Donat @ Developing for Dynamics GP
Active Directory Certificate Services, TechNet
What is Windows Communication Foundation?, MSDN
Dynamic Form Rendering, Mariano Gomez @ The Dynamics GP Blogster
Fiddler Web Debugging Proxy, Eric Lawrence
What is SSL Certificates?, GlobalSign (GMO Internet Group)
Using the Named System Database Feature for Microsoft Dynamics GP 2013, Aaron Donat @ Developing for Dynamics GP
Silverlight, Microsoft
How to Setup SSL on IIS?, Microsoft
Troubleshooting the Microsoft Dynamics GP 2013 Web Client - Part 7, Mariano Gomez @ The Dynamics GP Blogster

Hope you find this information useful.

Until next post!

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

Wednesday, December 4, 2013

Web Client Wednesday: Microsoft Dynamics GP on Azure


Back in February of this year, I did a full walk-through of Microsoft Dynamics GP 2013 deployment on Windows Azure. I realized that one of the things that make it hard for partners and customers to determine whether to use the Windows Azure platform for hosting their Microsoft Dynamics GP solution is the scattered information regarding (application) features that are supported on the platform. In fact, did you know that even if you are not running Microsoft Dynamics GP 2013, you can still take advantage of Windows Azure to host other versions of Microsoft Dynamics GP? You can always run the desktop client with Remote Desktop Services (RDS) to accomplish this.

So, the objective of this article is to go over the Microsoft Dynamics GP components that are supported on the Windows Azure platform, which can be categorized into features that are Fully Supported and features requiring RDS licensing.

Full Support

These are features that are internet facing (accessed via a browser) from the Windows Azure platform, without requiring much interaction with the desktop client.

  • Web Client
  • Web Services
  • Business Portal
  • Workflow (limited Dynamics GP desktop client use)
  • Management Reporter Web Viewer feature
  • Tenant Services
  • SQL Server Reporting Services Reports

RDS Licensing

These are features that you will access via a remote desktop connection and is no different than your traditional Terminal Services or Citrix experience.

  • Microsoft Dynamics GP desktop client
  • eConnect (determined by consuming application)
  • Integration Manager
  • Management Reporter Report Designer and Viewer
  • Excel Reports
  • Analysis Cubes

As you can tell, Windows Azure presents a great opportunity for those of you trying to leverage a world class data center. In addition, Azure allows connectivity to your LAN via its virtual network infrastructure. You can try it out free for 30 days by visiting http://www.windowsazure.com. All you need is a Microsoft Account (formerly Windows Live ID) to get started.

If you need a walk-through, please feel free to add your comment to this post with information on how to reach you.

For more info on RDS licensing, take a look at RDS Solution for Dynamics GP on Azure over at Inside Microsoft Dynamics GP.

Until next post!

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

Monday, November 18, 2013

How to Display Parent Company Information on SOP documents

A few days aback I encountered a really interesting discussion on the Microsoft Dynamics GP Community forum where the user needed to get the parent customer information on the SOP Blank Invoice Form. I asked myself, "Well, how difficult can that be?"

The first thought around these requests is, you create a table relationship between the Sales Transaction Work (SOP_HDR_WORK) table and the RM Customer Master (RM_Customer_MSTR) table by Customer Number and you get the parent customer ID. In that train of thought you immediately realize that there's no way to alias the RM Customer Master table back into the table relationship to retrieve the parent customer ID information. [NOTE TO SELF: this would be a cool Report Writer feature, but I digress.]

Of course, a second alternative is to use VBA, but many customers and partners are wary of implementing a VBA solution, especially when they are considering upgrading to Microsoft Dynamics GP 2013 and taking advantage of the web client. VBA customizations simply do not work with the web client.

As I thought through an alternative, I quickly realized this would be a good fit for the Support Debugging Tool and it's awesome Runtime Execute feature. As it turns out, the Support Debugging Tool is capable of executing Dexterity sanScript code within the context of any dictionary, but not only that; it provides some really cool templates that save time and minimizes the amount of code an entry level developer needs to create to accomplish a solution. In turn, there are a number of Report Writer API scripts built into the Dynamics application dictionary (DYNAMICS.DIC) to allow third party developers to expose data from their tables onto an existing Microsoft Dynamics GP report without having to write a complex interface to do so.

The Solution

1. The first task at hand is to open the Runtime Execute window in the Support Debugging Tool. Once the window is open, click on the Helper button to open the Insert Helper Function window. From the drop-down list, select template for rw_TableHeaderString.

Insert Helper Function window

Below is the signature for the function as we will use it.

The rw_TableHeaderString function

function returns string sData;

in integer dict_id;  {Support Debugging Tool Dictionary ID}
in string report_name;  {Support Debugging Tool Script ID to call}
in string sNumber;  {Parent Customer ID field we will retrieve}
in integer sType;  {Not used, we will default to 0}
in integer iControl;  {which piece of data to return} 

We will use this function to return a string value for the selected Parent Customer ID information field to a Report Writer calculated field.

By clicking OK, the Support Debugging Tool inserts the code to get us started in the right direction.

Helper Code
Very cool! All that's left now is to add the extra bits of code to retrieve the parent customer information from the RM Customer Master. In addition, we need to make sure that this code executes in the context of the Microsoft Dynamics GP product.

Additional Code
The template function even indicates where our code should be inserted and as you can see this is easy stuff for any entry level Dex developer. All we did here was use the MBS_Number local field as the parameter value that will contain our parent customer ID (to be passed from Report Writer) to get the piece of data we are interested in based on the value that we will supply to the MBS_Control local field (again, from Report Writer). The returned table value will then be stored in the MBS_TableHeaderString local field.

The Support Debugging Tool then goes to action and call its MBS_Param_Set API function to talk back to the Report Writer API script and deliver the values retrieved to it. Isn't this awesome!

2. The second part of our solution consists of 3 parts really: a) we need to create a table relationship between the Sales Transaction Work table and the RM Customer Master table as this relationship does not exist out of the box, b) We then need to create calculated fields for the pieces of Parent Customer data we would like to retrieve, and c) We need to complete the layout and grant security to the modified report.

I will assume for this article that you are familiar with the processes of creating new table relationships in Report Writer and laying out the new calculated fields and granting security to the modified report. You can always browse the Report Writer manual accompanying your Microsoft Dynamics GP application for information of these processes, so my attention will focus solely on the calculated field.

In this example, I want to retrieve the parent customer name. For this we will create a new calculated field as follows:

a) Create a new calculated field, in this case I will call it (A) Parent Name. The result type of the calculation will be a String and the expression type is Calculated.

b) Since we are using the rw_TableHeaderString user-defined function, we will choose this accordingly:

rw_TableHeaderString

c) Now we have to setup the parameters as indicated by the function signature above. The first parameter we will add is the Support Debugging Tool's dictionary ID, 5261. We will add this as an integer constant.

Dictionary constant 5261 to call the script we wrote
d) Now we have to call the Runtime Execute script we created, GETPARENTINFO. We will add this as a string constant.

GETPARENTINFO

e) We now need to pass the parent customer number parameter, our default (not used) parameter, and the value number for the field that will be retrieved for the parent customer data, according to how we coded our script above. This is shown below.

Last 3 parameters.

The RM_Customer_MSTR.Corporate Customer Number field is retrieved from the RM Customer Master table which we created via a new table relationship and subsequently adding that table relationship to our report.

The following shows a muck-up of the report layout with the parent customer name calculated field created:

Report Layout
The report should display something like this when run in Microsoft Dynamics GP:

Invoice Layout


Final Notes

The above script could be extended to retrieve other pieces of data for our parent customer, like contact, address, city, state, zip, phone numbers, etc. In this case you will need to add more entries to the case...end case statement above and retrieve the correct table column. You can find more information on the table columns for the RM Customer Master in the Microsoft Dynamics GP software development kit (SDK).

This solution is absolutely compatible with Word Templates and the Web Client. In the case of Word Templates, you will need to export a new report definition file (XML) and import into your template fields. In the case of the Web Client, all the components above are within the confines of a Dexterity application and the Support Debugging Tool happens to be compatible with the Web Client, just as much as Report Writer is. Your modified report should render absolutely fine on the Silverlight canvas control, if printing the standard report.

For all workstations to take advantage of the Runtime Execute script, the Support Debugging Tool must be deployed with the recommended configuration - all workstations pointing to a centralized configuration file, debugger.xml.


The Support Debugging Tool never ceases to amaze me. You can find similar article to this one and more information here:

The Dynamics GP Blogster - Adding Customer Item User Defined Field to SOP Invoice
Developing for Dynamics GP - The Support Debugging Tool Portal

Until next post!

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