I'm sure everyone knows this but me... but on a 64 bit box, you can't edit the ODBC connection for Dynamics GP. Grrr. You go in there, and it's blank.




You have a link on the home page under econnect called Inventory Transaction Entry Transaction Flow that points to this url 
It looks like exactly the type of thing that I need for a project only it's pretty outdated (1997).  Do you have something similar for setting up an inventory transaction line item and header (preferably a C# solution) in econnect 10?  Also, I'm new to GP and am wondering if it's easier to pass an xml string directly to econnect or designing an properly formatted xml file and then passing it to econnect.  I am pulling the sales data out of a SQL Server 2008 DB using SSIS and am trying to figure out how to output query results in xml in a format that will work with econnect.


Brent Miller

VBA has an Environ function that can be useful for getting things out of the... environment

It's basic use is like this:

Hello all, I have a question about inserting data into TWO.


Which tables cannot be overwritten without breaking Fabrikam in GP 10?

The task here is to update one SOP line in an existing SOP Sales Order. The technique is to send the line node only, without the header node.


Metadata contains a reference that cannot be resolved: 'net.pipe://localhost/Microsoft/Dynamics/GP/eConnect/'.
There was no endpoint listening at net.pipe://localhost/Microsoft/Dynamics/GP/eConnect/ that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
The pipe endpoint 'net.pipe://localhost/Microsoft/Dynamics/GP/eConnect/' could not be found on your local machine.
If the service is defined in the current solution, try building the solution and adding the service reference again.

I looked at this beauty for quite a while before I got it figured out. There was no answer in the Dynamics community, which is where I usually look, but I got some idea from the WCF community boards and hacked this solution.

I'm not pretending to understand the solution, I'm only saying that I got it working <smiles>


The creator of this fault did not specify a Reason.

I wonder if the capital 'R' is reason is significant.

I haven't figured this out yet, I'll post again if I get it.

I caused it by creating a call to the eConnect WCF service and intentionally causing an error. The error code that is returned is... not all that useful. Anyone have any ideas?

Here's my code:

Public Sub CreateEntity(ByVal Doc As String, ByVal Server As String, ByVal DB As String)
 Dim oeConnectClient As New ServiceReference1.eConnectClient("eConnectServiceEndpoint")
     Dim strConnectionString As String = String.Format("Data Source={0};Integrated Security=SSPI;Persist Security Info=False;Initial Catalog={1};", Server, DB)
     Dim bResult As Boolean
     bResult = oeConnectClient.CreateEntity(strConnectionString, Doc)
 Catch ex As System.ServiceModel.FaultException(Of ServiceReference1.eConnectFault)
     Throw ex
 Catch ex As System.ServiceModel.FaultException(Of ServiceReference1.eConnectSqlFault)
     Throw ex
 Catch ex As Exception
     Throw ex
 End Try
End Sub



eConnect: The queue does not exist or you do not have sufficient permissions to perform the operation

The eConnect MSMQ docs say that the default queue is called ".\private$\econnect_incoming9", and it isn't. If you open up the service .config file...



Greetings, I have a problem right now, I am capturing the LineLeaveBeforeOriginal and want to validate some fields, so if it doesn't pass my validations, then I prevent it from jumping to the next line, the problem is that it isnt't behaving the way I was expecting it to, it still go to the next line even though I put the cancelevent to true: This happens in GPAddin:

Sub Initialize()
Implements IDexterityAddin.Initialize
AddHandler Microsoft.Dexterity.Applications.Dynamics.Forms.SopEntry.SopEntry.LineScroll.LineLeaveBeforeOriginal, _ AddressOf SaltoLineaValidar
End Sub
Private Sub SaltoLineaValidar(ByVal sender As Object, ByVal e As ComponentModel.CancelEventArgs)
'Valido que se halla llenado el tipo de venta antes de hacer el salto
Dim oCapaDatos As New CapaDatos
If Dynamics.Forms.SopEntry.SopEntry.SopType.Value = 4 Or _ Dynamics.Forms.SopEntry.SopEntry.SopType.Value = 5 Then
If Not oCapaDatos.ExisteTipoVenta(Dynamics.Forms.SopEntry.SopEntry.SopNumber.Value, _ Dynamics.Forms.SopEntry.SopEntry.SopType.Value) Then
Windows.Forms.MessageBox.Show("No ha llenado el tipo de venta, Ingreselo y vuelva a ingresar la fila para asegurar su correcto precio.") e
.Cancel = True
End If
End If
End Sub

Does anybody knows what Im doing wrong? Thanks in advance

I've coded up the MSMQ example that is included in the help file for eConnect, and had good success. The only issue that I could not figure out was what happens to the error messages. eConnect validates the documents that you send and kicks back a number of them.

Since MSMQ is disconnected (it's designed so that the SQL server can go down and the messages will queue and get processed when the server comes back up), where do the errors go? They always go to the eConnect event log on the server, but it seems onerous to monitor the server event log from a client for an error that may or may not show up.

Kevin Johnson, a modorater on the Partner message board, provides the answer:

The eConnect Incoming Service logs errors to the eConnect event log the same as an eConnect API call. It also routes the failed message to the deadletter queue that you have configured for the service. So monitoring the eConnect event log or the deadletter queue would be the only way to track failures when using the Incoming service.

FYI, the Incoming Service can add the error description to a failed message that is routed to the deadletter queue by ensuring that you include:

<ProcReturnCode />

in the XML you're passing to the Incoming Service. If your incoming XML contains this and the message fails, the same error description that goes to the event log is populated in the ProcReturnCode field of the XML sent to the deadletter queue allowing you see why the message failed.


Sample code below.


Does anybody have a sample project that uses the Service Reference instead of the eConnect .dll's? I have a working solution, but am trying to use the service ref instead - and I am getting the famous error

"Could not find default endpoint element that references contract 'eConnectService.eConnect' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element."


I have tried to update all the config files I could find, as well as manually passing in the endpoint. All attempts fail to create the eConnect object. Just a note... I am developing on a box that is NOT the sql server.


See Sample attempts below:


Dim SVC_eConCall As New eConnectService.eConnectClient()
Dim SVC_eConCall As New eConnectService.eConnectClient("net.pipe://LocalHost/Microsoft/Dynamics/GP/eConnect/")


Error in deserializing body of reply message for operation 'CreateTransactionEntity'. The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader.

This is my first live eConnect GP2010 project using the new WCF service. I spent some time getting the code samples working, and today I'm coding a client project. This is a SOP integration, and one of the invoices has about 30 lines, so it serialized into an XML document with about 32,000 characters. Big - not huge- but big.

Handling errors in eConnect has always been just a little bit tricky, you need to explicitly trap for the specific errors that it throws or you will get very cryptic messages. Here is the code that I'm using to trap communications with the eConnect WCF service. You'll need to add code to handle the exception... but this is a starter. Note that the first 'catch' refers to 'ex.detail(0).message', and the second to 'ex.detail.message'. I've not seen those constructs before.

Could not find default endpoint element that references contract 'ServiceReference1.eConnect' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.

This one's not too hard. It's actually a common error when using a Windows forms app to call a class library (.dll).


I am having some difficulty getting the a Receipt posted to GP Dynamics 9.0 using eConnect.  I receive the following message:

 The INSERT statement conflicted with the CHECK constraint "CK__POP10300__GLPOST__77FFC2B3". The conflict occurred in database "TWO", table "dbo.POP10300", column 'GLPOSTDT'.
The statement has been terminated.

 I can not find any reference to the GLPOSTDT in any of the POP Receivings Schema....

 Below is the XML file used. 

************************************  XML FILE **********************************************

<eConnect xmlns:xsi="" xmlns:xsd="">
    <POPTYPE> 1</POPTYPE><!-- (REQUIRED) i4 Receipt type:-->
    <!--  1=Shipment;-->
    <!--  3=Shipment/invoice-->
    <POPRCTNM>IND202</POPRCTNM><!-- (REQUIRED) string(17) Receipt number-->
    <PONUMBER>PO2077</PONUMBER><!-- string(17) Purchase order number; required if receiving against a purchase order-->
    <ITEMNMBR>ACCS-CRD-12WH </ITEMNMBR><!-- (REQUIRED) string(30) Item number-->
    <ITEMDESC>Phone Cord - 12' White</ITEMDESC><!-- string(100) Item description for non-inventory-->
    <VENDORID>ACETRAVE0001</VENDORID><!-- (REQUIRED) string(15) Vendor ID-->
    <RCPTLNNM> </RCPTLNNM><!-- i4 Receipt line number-->
    <VNDITNUM>ACCS-CRD-12WH </VNDITNUM><!-- (REQUIRED) string(30) Vendor item number-->
    <VNDITDSC> </VNDITDSC><!-- string(100) Vendor item description-->
    <ACTLSHIP></ACTLSHIP><!-- datetime Actual ship date-->
    <INVINDX> </INVINDX><!-- i4 Inventory index-->
    <InventoryAccount> </InventoryAccount><!-- string(75) Inventory account-->
    <UOFM>Each</UOFM><!-- string(8) Unit of measure-->
    <UNITCOST> </UNITCOST><!-- number Unit cost; set to zero, or leave "null" if using AUTOCOST=1-->
    <EXTDCOST> </EXTDCOST><!-- number  Extended cost-->
    <NONINVEN> </NONINVEN><!-- i4 Non-inventory-->
    <JOBNUMBR> </JOBNUMBR><!-- string(17) Job number-->
    <BOLPRONUMBER> </BOLPRONUMBER><!-- string(30) BOL/pro number-->
    <QTYSHPPD>2</QTYSHPPD><!-- (REQUIRED) number Quantity shipped-->
    <QTYINVCD> </QTYINVCD><!-- number Quantity invoiced (required if POPTYPE=3)-->
    <AUTOCOST>1</AUTOCOST><!-- i4 Parameter to autofill cost based on the PO:-->
    <!--  0=Manual;-->
    <!--  1=Automatic-->
    <Purchase_IV_Item_Taxable> </Purchase_IV_Item_Taxable><!-- i4 Purchase inventory item taxable:-->
    <!--  1=Taxable;-->
    <!--  2=Nontaxable;-->
    <!--  3=Based on vendor-->
    <Purchase_Item_Tax_Schedu> </Purchase_Item_Tax_Schedu><!-- string(15) Purchase item tax schedule (blank unless Purchase_IV_Item_Taxable=1)-->
    <Purchase_Site_Tax_Schedu> </Purchase_Site_Tax_Schedu><!-- string(15) Purchase site tax schedule-->
    <TAXAMNT> </TAXAMNT><!-- number Tax amount-->
    <Landed_Cost_Group_ID> </Landed_Cost_Group_ID><!-- string(15) Landed cost group ID-->
    <LOCNCODE> </LOCNCODE><!-- string(10) Location code in receiving-->
    <POLNENUM> </POLNENUM><!-- i4 PO line number; must be unique per PO line-->
    <receiptdate>2009-05-04T00:00:00-05:00</receiptdate><!-- datetime Receipt date; required if using landed cost-->
    <CURNCYID> </CURNCYID><!-- string(15) Currency ID; information pulled from purchase order unless not doing a receiving against a purchase order-->
    <ProjNum> </ProjNum><!-- string(15) Project number; for use with Project Accounting only-->
    <CostCatID> </CostCatID><!-- string(15) Cost category ID: for use with Project Accounting only-->
    <AutoAssignBin> </AutoAssignBin><!-- i4 Use Default Bin; will use the PORECEIPTBIN bin from the item site combination or the site default-->
    <RequesterTrx> </RequesterTrx><!-- i4 Requester transaction:-->
    <!--  0=False;-->
    <!--  1=True (if True, it populates the requester shadow table)-->
    <USRDEFND1> </USRDEFND1><!-- string(50) User-defined field?developer use only-->
    <USRDEFND2> </USRDEFND2><!-- string(50) User-defined field?developer use only-->
    <USRDEFND3> </USRDEFND3><!-- string(50) User-defined field?developer use only-->
    <USRDEFND4> </USRDEFND4><!-- string(8000) User-defined field?developer use only-->
    <USRDEFND5> </USRDEFND5><!-- string(8000) User-defined field?developer use only-->
   <POPRCTNM>IND202</POPRCTNM><!-- (REQUIRED) string(17) Receipt number-->
   <POPTYPE>1</POPTYPE><!-- (REQUIRED) i4 Receipt type:-->
   <!--  1=Shipment-->
   <!--  3=Shipment/invoice-->
   <VNDDOCNM> </VNDDOCNM><!-- string(20) Vendor document number-->
   <!--  Required when POPTYPE=3-->
   <receiptdate>2009-05-04T00:00:00-05:00</receiptdate><!-- (REQUIRED) datetime Receipt date-->
   <ACTLSHIP> </ACTLSHIP><!-- datetime Actual ship date-->
   <BACHNUMB>RECEIVING ENTRY</BACHNUMB><!-- (REQUIRED) string(15) Batch number-->
   <VENDORID>ACETRAVE0001</VENDORID><!-- (REQUIRED) string(15) Vendor ID-->
   <VENDNAME> </VENDNAME><!-- string(64) Vendor name-->
   <SUBTOTAL> </SUBTOTAL><!-- number Subtotal?set to 0 if using AUTOCOST option-->
   <TRDISAMT> </TRDISAMT><!-- number Trade discount amount-->
   <FRTAMNT> </FRTAMNT><!-- number Freight amount-->
   <MISCAMNT> </MISCAMNT><!-- number Miscellaneous amount-->
   <TAXAMNT> </TAXAMNT><!-- number Tax amount-->
   <TEN99AMNT> </TEN99AMNT><!-- number 1099 amount-->
   <PYMTRMID> </PYMTRMID><!-- string(20) Payment terms ID-->
   <DSCPCTAM> </DSCPCTAM><!-- number Discount percent amount-->
   <DSCDLRAM> </DSCDLRAM><!-- number Discount dollar amount-->
   <DISAVAMT> </DISAVAMT><!-- number Discount available amount-->
   <REFRENCE> </REFRENCE><!-- string(30) Reference-->
   <USER2ENT> </USER2ENT><!-- string(15) User who entered-->
   <VCHRNMBR> </VCHRNMBR><!-- string(20) Voucher number-->
   <Tax_Date> </Tax_Date><!-- datetime Tax date-->
   <TIME1> </TIME1><!-- datetime Time 1-->
   <WITHHAMT> </WITHHAMT><!-- number Withholding amount-->
   <TXRGNNUM> </TXRGNNUM><!-- string(25) Tax registration number-->
   <AUTOCOST> </AUTOCOST><!-- i4 Parameter to autofill cost based on PO:-->
   <!--  0=Enter manually;-->
   <!--  1=Automatic-->
   <TAXSCHID> </TAXSCHID><!-- string(15) Tax schedule ID-->
   <Purchase_Freight_Taxable> </Purchase_Freight_Taxable><!-- i4 Purchase freight taxable-->
   <Purchase_Misc_Taxable> </Purchase_Misc_Taxable><!-- i4 Purchase miscellaneous taxable-->
   <FRTSCHID> </FRTSCHID><!-- string(15) Freight tax schedule ID-->
   <MSCSCHID> </MSCSCHID><!-- string(15) Miscellaneous tax schedule ID-->
   <FRTTXAMT> </FRTTXAMT><!-- number Freight tax amount-->
   <MSCTXAMT> </MSCTXAMT><!-- number Miscellaneous tax amount-->
   <BCKTXAMT> </BCKTXAMT><!-- number Back tax amount-->
   <BackoutTradeDiscTax> </BackoutTradeDiscTax><!-- number Back out trade discount tax amount-->
   <SHIPMTHD> </SHIPMTHD><!-- string(15) Shipping method-->
   <USINGHEADERLEVELTAXES> </USINGHEADERLEVELTAXES><!-- i4 Using header level taxes-->
   <CREATEDIST> </CREATEDIST><!-- i4 Flag to autocreate distributions:-->
   <!--  0=Manual (need to call <taPopDistributions>);-->
   <!--  1=Automatic-->
   <CURNCYID> </CURNCYID><!-- string(15) Currency ID-->
   <XCHGRATE> </XCHGRATE><!-- number Exchange rate-->
   <RATETPID> </RATETPID><!-- string(15) Rate type ID-->
   <EXPNDATE> </EXPNDATE><!-- datetime Expiration date-->
   <EXCHDATE> </EXCHDATE><!-- datetime Exchange date-->
   <EXGTBDSC> </EXGTBDSC><!-- string(30) Exchange ID description-->
   <EXTBLSRC> </EXTBLSRC><!-- string(50) Exchange rate source-->
   <RATEEXPR> </RATEEXPR><!-- i4 Rate expiration:-->
   <!--  0=None-->
   <!--  1=Daily;-->
   <!--  2=Weekly;-->
   <!--  3=Biweekly;-->
   <!--  4=Semimonthly;-->
   <!--  5=Monthly;-->
   <!--  6=Quarterly;-->
   <!--  7=Annually;-->
   <!--  8=Miscellaneous;-->
   <!--  9=None;-->
   <DYSTINCR> </DYSTINCR><!-- i4 Days to Increment?used only when RATEEXPR=8-->
   <RATEVARC> </RATEVARC><!-- number Rate variance-->
   <TRXDTDEF> </TRXDTDEF><!-- i4 Transaction date default:-->
   <!--  0=Exact date;-->
   <!--  1=Next date;-->
   <!--  2=Previous date-->
   <RTCLCMTD> </RTCLCMTD><!-- i4 Rate calculation method:-->
   <!--  0=Multiply;-->
   <!--  1=Divide-->
   <PRVDSLMT> </PRVDSLMT><!-- i4 Previous day's limits-->
   <DATELMTS> </DATELMTS><!-- i4 Date limits:-->
   <!--  0=Unlimited;-->
   <!--  1=Limited-->
   <DUEDATE>2007-04-21 00:00:00.000</DUEDATE><!-- datetime Due date-->
   <DISCDATE> </DISCDATE><!-- datetime Discount date-->
   <NOTETEXT> </NOTETEXT><!-- string(8000) PO receipt note text-->
   <VADCDTRO> </VADCDTRO><!-- string(15) Remit to address ID-->
   <RequesterTrx> </RequesterTrx><!-- i4 Requester transaction:-->
   <!--  0=False;-->
   <!--  1=True (if True, populates requester shadow table)-->
   <USRDEFND1> </USRDEFND1><!-- string(50) User-defined field?developer use only-->
   <USRDEFND2> </USRDEFND2><!-- string(50) User-defined field?developer use only-->
   <USRDEFND3> </USRDEFND3><!-- string(50) User-defined field?developer use only-->
   <USRDEFND4> </USRDEFND4><!-- string(8000) User-defined field?developer use only-->
   <USRDEFND5> </USRDEFND5><!-- string(8000) User-defined field?developer use only-->



Can any one explain the sample for getting next number in econnect for 2010 for, is it different from econnect10, as it is not fetching the next number instead it is fetching the available unused number.




I am trying to integrate General Ledger Transaction with AA codes for GP2010 in code, i am able to integrate info without AA code, when AA code is added i get the error message "Procedure or function 'taAnalyticsDistribution' expects parameter '@I_vDOCNMBR', which was not supplied." , below is my xml output, let me know if anything is missing, or what is the solution for this error.


<?xml version="1.0" encoding="utf-8" ?>

<eConnect xmlns:xsi="" xmlns:xsd="">


<eConnectProcessInfo xsi:nil="true" />

<taRequesterTrxDisabler_Items xsi:nil="true" />




















<taAnalyticsDistribution xsi:nil="true" />






<aaTrxDimCode>PROJECT 1</aaTrxDimCode>







<aaTrxDimCode>PROJECT 2</aaTrxDimCode>













<taMdaUpdate_Items xsi:nil="true" />



Table Definition Quick Links
All Tables
SOP Tables
RM Tables
GL Tables
POP Tables
HR Tables
PM Tables
UPR Tables
IV Tables
Olympic Tables