GPUGSummit | #INreno15

#GPUGSummit
USING GP POWER TOOLS TO WRITE CUSTOM
WEB SERVICES FOR MICROSOFT DYNAMICS GP
David Musgrave MVP
Managing Director,
Winthrop
Consultants
#GPUGSummitDevelopment
| #INreno15
Mariano Gomez MVP
Senior Software Engineer,
Mekorma
AGENDA

Introductions

History of GP Power Tools

Service Based Architecture

GP Power Tools and its Services implementation

Demonstration

Q&A
#GPUGSummit | #INreno15
2
DAVID MUSGRAVE

Managing Director of Winthrop Development Consultants

Microsoft Dynamics GP Most Valuable Professional (MVP)

Worked with Microsoft for 13 and a half years

Lives in Winthrop, a suburb in the city of Perth

Where is Perth, Western Australia?
#GPUGSummit | #INreno15
3
#GPUGSummit | #INreno15
#GPUGSummit | #INreno15
MARIANO GOMEZ

Senior Software Engineer at Mekorma

Microsoft Dynamics GP Most Valuable Professional (MVP)

Lives in Atlanta, Georgia, USA

Born on a small Colombian island off the coast of Nicaragua

Where is San Andres Island?
#GPUGSummit | #INreno15
6
#GPUGSummit | #INreno15
#GPUGSummit | #INreno15
AGENDA

Introductions

History of GP Power Tools

Service Based Architecture

GP Power Tools and its Services implementation

Demonstration

Q&A
#GPUGSummit | #INreno15
9
HISTORY
Support Debugging Tool (SDT) initially created in August 2006
 Publically released in September 2008
 Last release was Build 19 in September 2014 (Day before losing job)
 Discontinued when David Musgrave left Microsoft in October 2014

Negotiations with Microsoft for exclusive rights finalized in March 2015
 Renamed to Winthrop Development Consultants’ GP Power Tools (GPPT)
 Release Build 20 for GP 2010, GP 2013 and GP 2015 in August 2015
 Distributed and Supported worldwide by Mekorma

#GPUGSummit | #INreno15
10
SERVICE BASED ARCHITECTURE

Introduced with Microsoft Dynamics GP 2015 (Version 14.0)
–

Service Enabled Procedures
–
–

Service Enabled Procedures and .Net Interop
Dexterity Global Procedures with Metadata to expose them externally
as REST (Representational State Transfer) based web services
Allows external code to directly call Dexterity based business logic
.Net Interop
–
–
Enables Dexterity sanScript code to re-use .Net objects with their
methods and properties
Allows Dexterity code to directly call and use .Net objects
#GPUGSummit | #INreno15
11
GP POWER TOOLS SERVICES

GP Power Tools has five Service Enabled Procedures
–
ServiceCreateCustom
ServiceDeleteCustom
ServiceGetCustom
ServiceUpdateCustom
ServicePostCustom
–
* Must include Custom action definition: GP-Custom-Action=Post
–
–
–
–
#GPUGSummit | #INreno15
Create
Delete
Get
Update
Custom*
POST
DELETE
GET
PATCH
POST
in
in
in & out
in
in & out
12
GP POWER TOOLS PARAMETERS

One parameter is passed with URI
–

The additional parameters as Payload
–
–
–

When calling the web service, there is a string parameter for Script ID
The input parameter is a collection of strings: List<String>
The output parameter (for Get and Post) is also: List<String>
The Status returned is a Short
The data contained on each line of the collection must be defined
–
–
For Example: Line 1 = Customer Number
Line 2 = Customer Name
#GPUGSummit | #INreno15
13
GP POWER TOOLS SERVICE IMPLEMENTATION

The Script ID passed into the service specifies a Runtime Execute
Script ID to be run when the service is called.
–

The Runtime Execute window populates with a template script when
the Custom Script Purpose for one of the Services is selected
The .Net collection of Strings: List<String> are converted to Text
fields
–
–
To make the script work with Runtime Execute, the payload in and out
are converted to Text fields where each String in the collection is a line
in the Text Field.
The template script handles the parsing of the Text field.
#GPUGSummit | #INreno15
14
GP POWER TOOLS SERVICE SCRIPTS

While the template scripts for the five services provide example
code, the actual functionality can be completely user defined.
–

The scripts can use Helper Functions to run other scripts
–

The Runtime Execute scripts can perform any action possible within
the system
You can run scripts created with Runtime Execute (Dexterity), SQL
Execute (Transact-SQL) or .Net Execute (C# or Visual Basic.Net)
The scripts can use the Helper Functions to pass parameters
–
The Helper Functions can be used to pass values or scripts can be
modified after they are loaded and before they are executed
#GPUGSummit | #INreno15
15
GP POWER TOOLS DEMONSTRATION

Going to use Services to create, update, get and delete a customer

Tweet using #GPPT #MSDYNGP #GPUGSummit
#GPUGSummit | #INreno15
16
DEMONSTRATION
#GPUGSummit | #INreno15
#GPUGSummit | #INreno15
GP POWER TOOLS LINKS
GP Power Tools Portal
http://WinthropDC.com/GPPT
GP Power Tools Product Pages
http://winthropdc.com/products_GPPT.htm
http://www.mekorma.com/products/gp-power-tools.aspx
#GPUGSummit | #INreno15
19
LINKS
David Musgrave’s Winthrop Development Consultants Blog
http://www.winthropdc.com/blog
The Microsoft Dynamics GP Blogster blog (by Mariano Gomez)
http://dynamicsgpblogster.blogspot.com/
Developing for Microsoft Dynamics GP Blog – retired
(by David Musgrave & the Developer Support Team)
http://blogs.msdn.com/DevelopingForDynamicsGP/ or http://aka.ms/Dev4DynGP
#GPUGSummit | #INreno15
20
[email protected]
[email protected]
#GPUGSummit | #INreno15
QUESTIONS?
Contact: [email protected] & [email protected]
#GPUGSummit | #INreno15