Sanjay,
I have come to a conclusion that including a custom extension table in the eConnect outgoing setup table will not produce the desired results if this table is not part of any type of eConnect document class. I followed documentation and had everything setup in eConnect_Out_Setup. I was monitoring SOP30200 (DocType Sales_History_Transaction) with my Requester.OutputType set to 2 (grab the entire sales order transaction). I setup an extension table named "ShippingBoxes" and gave it a docType of "Sales_History_Transaction" and joining on SOPNUMBR from my box table to SOP30200. After realizing no transactions were passing through to MSMQ i journeyed into event viewer and noticed that eConnect was failing with an exception:
".Net SqlClient Data Provider
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteXmlReader()
at Microsoft.Dynamics.GP.eConnect.Outgoing.ExecuteCompanyRequest.Execute_Request(String DocType, DateTime DATE1, String TABLENAME, Int32 DEX_ROW_ID, String INDEX1, String INDEX2, String INDEX3, String INDEX4, String INDEX5, String INDEX6, String INDEX7, String INDEX8, String INDEX9, String INDEX10, String INDEX11, String INDEX12, String INDEX13, String INDEX14, String INDEX15, Int32 Action)"
I changed the DocType to a custom type of "Boxing" and restarted the service. The transaction was executed to MSMQ, but missing the added box nodes from my extension table.
Unless there is a way to relate this custom table to a SOP transaction in the eConnect SDK i'm certain that this is not possible. My conclusion rendered that an eConnect to MSMQ transaction had to be a member of the same class (DocType) to be included in the eConnect MSMQ transaction. There is little to no documentation on this (that i could find) to point me in the right direction.
Fortunately i was not limited to needing this entire transaction in 1 single xml. I had created a windows service that monitors these transactions, once an invoice is delivered i just fire a stored procedure (via my c# windows service) and pass my SOPNUMBR to get the related box information from GP... this will suffice for my task, but i'd like to here from a GP professional to validate my findings...
Hope that helps