Page 1 of 2212345678910...20...Last »

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/

Originally posted here:
Microsoft Dynamics GP 2015 Identity Management

February 12, 2015 · Mariano Gomez · No Comments
Tags: , , , , , , , , ,  · Posted in: Blogs I Follow Total Views: 61

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.

View post:
Welcome to the Microsoft Dynamics GP Engineering Team blog

January 20, 2015 · Mariano Gomez · No Comments
Tags: , , , , , , , , , , ,  · Posted in: Blogs I Follow Total Views: 36

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/

View article:
Microsoft Dynamics GP backups with Windows Azure Blob Storage Service – Follow up

December 15, 2014 · Mariano Gomez · No Comments
Tags: , , , , , , , , , , ,  · Posted in: Blogs I Follow Total Views: 56

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/

Read the original post:
Microsoft Dynamics GP 2015 RTM is now available

December 5, 2014 · Mariano Gomez · No Comments
Tags: , , , , , , , , ,  · Posted in: Blogs I Follow Total Views: 97

Microsoft Dynamics GP 2015 Developer’s Preview: .NET Framework Interoperability – Part 3

In part 2 of the series, I delivered a brief primer on the service architecture in Microsoft Dynamics GP 2015 and how you are able to consume services natively created with Dexterity. There are two types of services that can be created: services that wrap existing windows and forms functionality, i.e., creating a customer; and services that can wrap around existing sanScript procedures, i.e, retrieving customer information. The truth is, none of that stuff would be possible without the ability to interoperate with the Microsoft .NET Framework.

Today, I’m going to show you some of the .NET interop capabilities built into Dexterity 14.0 and how these can enhance the user experience and your application integration capabilities. The example used in this post is based on my previous article, Building a COM Interop Assembly to use with Microsoft Dexterity, which showed how we had to leverage .NET’s ability to expose an assembly via COM interfaces, so we could reference its methods using Dexterity. In that particular example, I built some standard methods to expose the sine, cosine, and tangent trigonometric functions to a Dexterity application. This time around, I will show how to build the same functionality taking full advantage of Dexterity’s new .NET interop capabilities.

The user experience will be slightly different this time. In addition to a window that will allow you to calculate any of the trigonometric functions on a specific angle (entered in degrees), we will display a .NET form showing a visual representation of that angle. The .NET form will be dynamically built and displayed from Dexterity using the methods and properties provided by the Form class (System.Windows.Forms) and the visual drawings will be delivered using the classes exposed in the System.Drawing namespace.

1. The first things we must do is incorporate references to the corresponding assemblies for the Forms class and Drawing namespaces. As developer, the first thing you will notice is the enhancements to Dexterity’s Library Definition window, which now allows for the selection of a .NET Assembly library type.

Library Definition

Once the type has been selected, you can browse out to the different .NET assemblies loaded on your operating system.

.NET Assemblies

In particular, what I like is the ability to select the .NET Framework assembly that I want to work with directly, as opposed to having to compile my application for a specific Framework version as you normally would do with Visual Studio.

Resource Explorer will now reflect the different .NET namespaces selected for you application.

Resource Explorer

2. Since this article assumes some familiarity with Dexterity, I’m not going to dive into the process of building the form and window, but rather point out that it follows the same layout and properties I used in my previous article.

Form and Window Definition

The only “rarity” here is I added a local field called ‘(L) GraphicAngleForm’ that will serve as a generic reference to the .NET form we will dynamically create. The ‘(L) Conversion’ and ‘(L) Angle’ fields are currency fields and are formatted with two decimals and unsigned (DLR11_U2).

Generic Reference field

3. The code for our ‘(L) Sine’ button will look something like this.

MGB_Trigonometric_Test l_Sine_CHG

// Created by Mariano Gomez, MVP
// This code is licensed under the Creative Commons
// Attribution-NonCommercial-ShareAlike 3.5 Generic license.
using System;
using System.Windows.Forms;
using System.Drawing;

local currency l_angle;
local Form f;

'(L) Prompt' = "The Sin(%1°) value is ";
substitute '(L) Prompt', str('(L) Angle');

// calculate the sine value of the angle after converting it to radians
'(L) Conversion' = Math.Sin(Math.PI * '(L) Angle' / 180.0);

if empty('(L) GraphicAngleForm') then
f = new Form();
'(L) GraphicAngleForm' = f;

f.Text = "Graphical Representation of the Angle entered";
f.BackColor = Color.White;

// Set the size of the form
f.ClientSize = new Size(640, 480);

// Make the form a fixed size
f.MaximumSize = f.ClientSize;
f.MinimumSize = f.ClientSize;

// event handlers
f.Paint += PaintAngle of form MGB_Trigonometric_Test;
f.FormClosed += CloseDrawingForm of form MGB_Trigonometric_Test;

end if;

// show and activate our .NET form
'(L) GraphicAngleForm'.Show();
'(L) GraphicAngleForm'.Activate();

When you really look at the code, the first thing you will notice is the first 3 lines. sanScript now implements the using statement just like C#. sanScript has also been extended to use the implement statement for dynamically referencing an assembly.

using System;
using System.Windows.Forms;
using System.Drawing;

Next we can then calculate the sine of the angle in radians by simply calling the Math.Sin() method in the System namespace (the System namespace is part of the Microsoft Core Library, mscorlib.dll). We also reference the Math.PI constant to perform the conversion of the angle from degrees to radians.

// calculate the sine value of the angle after converting it to radians
‘(L) Conversion’ = Math.Sin(Math.PI * ‘(L) Angle’ / 180.0);

Once we have the angle converted and displayed in the ‘(L) Conversion’ field, we can proceed to create the form by instantiating the Form class – in reality, this part is no different than what you would normally do for COM classes – and setting some properties for the .NET form we want to display. Once we have set the size of the window, we need to create some event handlers for when the .NET form open and closes. As you can see in the code, Dexterity now implements event handlers through the use of the += operator.

// event handlers
f.Paint += PaintAngle of form MGB_Trigonometric_Test;
f.FormClosed += CloseDrawingForm of form MGB_Trigonometric_Test;

Our event handlers in this case will be the PaintAngle (on .NET form open) and CloseDrawingForm (on .NET form close). The PaintAngle event handler will display the actual graphical representation of the angle, and the CloseDrawingForm event handler will do some cleanup for us. Now, as you may suspect, these event handlers are implemented as procedure scripts to the MGB_Trigonometric_Test form (form procedures). So let’s take a look at the PaintAngle form procedure:

PrintAngle

// Created by Mariano Gomez, MVP
// This code is licensed under the Creative Commons
// Attribution-NonCommercial-ShareAlike 3.5 Generic license.
using System;
using System.Windows.Forms;
using System.Drawing;

inout System.Object sender;
inout PaintEventArgs e;

local Pen bp, rp;
local Color c;

// Get the color
c = Color.Blue;

// Create the blue pen
bp = new Pen(c, 2);

e.Graphics.DrawLine(bp, 320, 240, 520, 240);
e.Graphics.DrawLine(bp, 320, 240, 320 + Math.Cos('(L) Conversion' of window MGB_Trigonometric_Test) * 200, 240
- Math.Sin('(L) Conversion' of window MGB_Trigonometric_Test) * 200);

c = Color.Red;
rp = new Pen(c, 2);

e.Graphics.DrawEllipse(rp, 300, 220, 40, 40);

Again, the mechanics here is not so much the important part, but rather to highlight the clever way in which the event handler parameters are declared for the sender of the event and the event arguments being passed by the sender of the event. For this the Dexterity team chose to implement inout parameters.

Overall the PrintAngle procedure simply draws two lines and a circle. The first line is the base line of the angle and will simply be a horizontal line. The second line actually shows the displacement in reference to the base line to give the actual angle representation. This all looks something like this when the code is executed:

Angle Calculator

Having the ability to leverage .NET capabilities directly from Dexterity has now opened up a new realm of possibilities for Microsoft Dynamics GP business application developers. Applications that were once thought to be out of reach or required complex workarounds are now a thing of the past. Code portability is now much more compact and robust than before. The good part is, Dexterity developers do not need relearn any development patterns and/or be exposed to steep learning curves. All the .NET Framework documentation is available online with tons of sample code to go along.


This article is part of the Microsoft Dynamics GP 2015 Developer’s Preview series.

Microsoft Dynamics GP 2015 Developer’s Preview: Loading the VHD image – Part 1
Microsoft Dynamics GP 2015 Developer’s Preview: Working with Sample URIs – Part 2
Until next post!

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

Continue reading here:
Microsoft Dynamics GP 2015 Developer’s Preview: .NET Framework Interoperability – Part 3

October 29, 2014 · Mariano Gomez · No Comments
Tags: , , , , , , , , , , ,  · Posted in: Blogs I Follow Total Views: 99

Microsoft Dynamics GP 2015 Developer’s Preview: Loading the VHD image – Part 1

Now that you are beyond the initial excitement of the preview release announcement and have downloaded the RAR files with the links provided by Kevin Racer, Sr. Program Manager Lead with the Microsoft Dynamics GP team (See Microsoft announces Developer Preview for Dynamics GP 2015 for links to the rar files), it’s time to get the VHD image loaded.

Note: you can use WinRAR or WinZip to extract the virtual hard drive image from the rar files downloaded from PartnerSource. The extracted file is 29.1GB.

Part 1 will focus on the traditional Hyper-V method of loading the file. Click here for direct access to the video on YouTube.

Until next post!

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

Continued here:
Microsoft Dynamics GP 2015 Developer’s Preview: Loading the VHD image – Part 1

August 29, 2014 · Mariano Gomez · No Comments
Tags: , , , , , , , , ,  · Posted in: Blogs I Follow Total Views: 109

Customizing Integration Manager Logs – Part 1

Just recently, I took on a question on the Microsoft Dynamics GP Partner Online Technical Forum where the original poster asked if it was possible to customize the logs produced by Integration Manager (“IM”).

Before we get into the customization aspects of the log, let’s start by remembering that IM already offers 4 levels of log customization out of the box: a Summary log, a Document level log, a Trace level log and, if you consider no log an option, then None. In the case of a Document level log, information about every integrated record is logged, including the document number (keep in mind that document here refers to the entire envelope of data regardless of whether it’s an actual document or a master record). The Trace level log, in addition to the Document level information, examines and outputs all the steps performed by IM to get the document into Microsoft Dynamics GP, including any errors or warnings that Microsoft Dynamics GP may send back to IM.


IM Properties window – Logs tab

At this point, the above options are out of the box and do exactly what Microsoft developers intended. However, what if you really want to extend the capabilities of the log to provide some additional information that is not currently covered by the Document or Trace level logs? It is possible to provide this extra piece of information if you are familiar with IM event scripts.

IM Properties window – Scripts tab

In particular, the Document Warning, Document Error, and Integration Error event scripts allow you to make use of the VBScript scripting editor to extend the information you may include in the log file, regardless of log trace level. As the events suggest, the Document Warning event will fire when IM receives a warning from Microsoft Dynamics GP in response to an attempt to integrate a document, i.e., a missing distribution account when integrating a journal entry. While the journal will still integrate, it means that further editing work will be required in Microsoft Dynamics GP to add the missing account and balance the journal transaction before posting is possible.

In contrast, the Document Error event fires when Microsoft Dynamics GP cannot accept the master record or transaction being imported due to inconsistencies with the data. For example, a SOP invoice is submitted with missing required field, causing the document to be rejected by Microsoft Dynamics GP. In this case, this response is captured as document error by IM, causing the Document Error event to fire.

Finally, the Integration Error event fires each time an error occurs for the integration process as a whole.

This is not to say you can’t add additional information to the log at any other point or event within Integration Manager, but you will want to remember that most times when you are dealing with logs, you want to mostly target exceptions within the integration process and not necessarily every single event.

Tomorrow, I will focus on the scripting options available to enhance/customize the logs. Also remember that this and many other topics will be covered during my GPUG Summit 2014 session on Integration Manager. Please register and attend the session.

Until next post!

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

Read the article:
Customizing Integration Manager Logs – Part 1

August 26, 2014 · Mariano Gomez · No Comments
Tags: , , , , , , , , , ,  · Posted in: Blogs I Follow Total Views: 77