Microsoft Dynamics GP 9 and 10
Microsoft Dynamics GP is an accounting software package that runs on top of a Microsoft SQL Server database. Before its purchase by Microsoft, it was called Great Plains Software. This connector provides a means of retrieving and manipulating data in the database back end of a Microsoft Dynamics GP system. It supports connections to versions 9 and 10.
These connectors rely on Microsoft Dynamics GP eConnect, which uses SQL stored procedures to implement business logic rules, validate data for Great Plains, and ensure good performance.
Before You Begin
The following are requirements before you can use the connector.
• Install a Microsoft Dynamics GP 9 or 10 compliant web service. For details, see the MSDN library.
• Version 9 only: To avoid receiving an ISO 4217 currency code error, install web server software update 924546, which you can download from the Microsoft Dynamics GP knowledge base.
Connectivity Pointers
If you have problems with data truncation, see the
Microsoft Dynamics GP Web Services Reference to determine the length of each key field. Then you can manually change the field sizes using the integration platform. You can download this document from the
Learn tab of the
Microsoft Dynamics GP Developer Center home page.
Connector-Specific Notes
Date fields. Date fields sent from Microsoft Dynamics GP contain a time value, even though the time value is not relevant for these fields. For example, assume that the web service response contains <DateCreate>2008-07-30 00:00:00</DateCreated>. If you map this field to an ASCII Delimited file with no date conversions, the following data is returned: 7/30/2008 12:00:00 am.
CRUD Operations. The Microsoft interface to Microsoft Dynamics GP data does not support all fields in a Dynamics GP system, and some fields are available only for read access. The create, delete, get, and update methods of the Microsoft interface provide insight into which CRUD operations this connector can perform.
Error Messages. This connector sometimes returns error messages from the originating server that are not useful when troubleshooting server-side issues. Microsoft Dynamics GP offers information that may be more helpful in these situations.
Query Statements. Query statements are not supported in this connector.
For more information on the above limitations, see the
Microsoft Dynamics GP Web Services Reference. You can download this document from the
Learn tab of the
Microsoft Dynamics GP Developer Center home page.
Property Options
You can set the following source (S) and target (T) properties.
Data Types
These are the data types of the fields in a table.
If you are appending data to an existing table, the data type of each field uses the data type in the selected table by default.
The data types displayed for the fields of tables available in Microsoft Dynamics GP are the defaults specified by web service interface.
• bigdecimal
• biginteger
• boolean
• byte
• bytes
• character
• date
• double
• float
• integer
• long
• record
• short
• string
• text
Additional Considerations
The following sections discuss various options supported in this connector.
Viewing Hierarchical Data
The hierarchical data that is delivered from GP is unrolled into a series of flat records. Source child records are associated with their appropriate parents by ordering of the data.
The hierarchical data contained within a top-level record type, such as Customer, falls into three categories:
• Data that can be flattened
• Data that represents a choice
• Data that represents a list of more hierarchical data
Understanding Record Names
Record names follow a certain pattern. For instance, if the record name does not start with an open bracket, it is a top-level parent. Otherwise, it uses the following pattern:
[parent!child1!child2!...childN]child
where child1 is a child of parent1, child2 is a child of child1, and so on.
For example, sales orders can contain multiple lines and each line can contain multiple freight taxes. In this case, the connector has the following record types:
SalesOrder
[SalesOrder]Lines
[SalesOrder!Lines]FreightTaxes
Data That Can Be Flattened
Hierarchical data can be flattened into a number of fields contained within its parent. This data is not exposed as a separate record type, and is broken down into a series of fields that are attached to its parent.
For example, the Customer record type contains the following fields:
CashGLAccountKey_IdCashGLAccountKey_IsEncrypted
The GP back-end sends a Customer record type containing a CashGLAccountKey with two child fields:
Id
IsEncrypted
The depth of flattening correlates directly to the number of underscores present in the field name.
Data That Represents a Choice
Sections of hierarchical data can sometimes differ when data is delivered. The connector creates record types to deal with this. There is a marker record type with the suffix _C, which is a flag saying that the following record type represents the data that was actually delivered. Each of these record types contain a number of record types, which represent the available choices.
In the GLTransaction record type, each GLTransaction can contain [GLTransaction]Lines records.
Each [GLTransaction]Lines instance contains the record type, [GLTransaction!Lines]DebitAmount_C.
Each [GLTransaction!Lines]DebitAmount_C can be followed by either a [GLTransaction!Lines!DebitAmount_C]MoneyAmount or a [GLTransaction!Lines!DebitAmount_C]Quantity.
Assume that you received the following from GP:
<gltransaction>
<id>100</id>
<line><num>1</num><money_amount><value>100</value></money_amount></line>
<line><num>2</num><quantity><number>5</number></quantity></line>
</gltransaction>
The connector produces the following record series:
GLTransaction: id = 1
[GLTransaction]Lines: num = 1
[GLTransaction!Lines]DebitAmount_C
[GLTransaction!Lines!DebitAmount_C]MoneyAmount: value = 100
[GLTransaction]Lines: num = 2
[GLTransaction!Lines]DebitAmount_C
[GLTransaction!Lines!DebitAmount_C]Quantity: value = 5
Data That Represents a List of Hierarchical Data
Some record types contain multiple instances of a grouping of fields. For instance, a GLTransaction can contain many Lines that are treated as record types and are given prefixes that indicate the parents.
For example, assume GP delivers two sales orders and that each order contains two lines. The connector produces the following records:
SalesOrder: field = value, ...
[SalesOrder]Lines: line_field = value, ...
[SalesOrder] Lines
SalesOrder
[SalesOrder]Lines
[SalesOrder]Lines
The record type is [SalesOrder]Lines as opposed to [SalesOrder]Line because of variable names. Remember that a record of type [SalesOrder]Lines represents one line on a sales order.