A place for me to store and share some notes about technical stuff I'm working with at the moment.
The views expressed on this blog are mine alone and do not necessarily reflect the views of my employer.
Wednesday, February 13, 2008
Deploy Problem From Within Visual Studio
Error 25 Failed to add resource(s). Change requests failed for some
resources. BizTalkAssemblyResourceManager failed to complete end type change
request. Failed to update binding information. Party 'PartyName' enlisted
under role
'ResaleReportReceiver(MyCompany.B2B.ResaleReport.Process.SendResaleReportRoleLink_Type)'
has not bound all the operations of role link port types.
The last thing I tried was to go through each project and to set Redeploy= false, and then delete the project. That worked.
Wednesday, February 06, 2008
Event Type: Error
Event Source: BizTalk Server 2006
Event Category: BizTalk Server 2006
Event ID: 5754
Date: 2/5/2008
Time: 6:06:56 PM
User: N/A
Computer: ACME31
Description:
A message sent to adapter "FILE" on send port "ACME.B2B.ResaleReport.Port.Snd.Http.OneWay.Test.eBI.Steve" with URI "C:\Dev\ACME.B2B.ResaleReport\OneWayPorts\DB2\%MessageID%.xml" is suspended.
Error details: The system cannot find the file specified. (Exception from HRESULT: 0x80070002)
MessageId: {4E99E4FF-5E09-441E-8AB2-2A83FB49B3A6}
InstanceID: {0BFBB93E-3352-4354-A1C7-A153FE90A42C}
When I removed the map from the send port, I was able to get a message out with no errors.
I was stumped until I tried to run the map inside of Visual Studio, and then I saw this message:
Invoking component...
C:\Dev\ACME.B2B.ResaleReport\ACME.B2B.ResaleReport.Transforms.Premier\ResaleReport_To_EDI867.btm: error btm1067: The external assembly with the fully qualified name "ACME.B2B.ResaleReport.Utilities, Version=1.1.0.0, Culture=neutral, PublicKeyToken=ffee3e80c6a877dd" cannot be invoked. Make sure this assembly is in GAC.
Test Map used the following file:
Test Map success for map file C:\Dev\ACME.B2B.ResaleReport\ACME.B2B.ResaleReport.Transforms.Premier\ResaleReport_To_EDI867.btm. The output is stored in the following file:
Component invocation succeeded.
From this, it was easy to see that there were some custom functoids in the map that were not deployed to the GAC. I deployed the DLL containing the functoids, and the error was fixed.
Monday, September 17, 2007
Event Type: Warning
Event Source: SQLSERVERAGENT
Event Category: Job Engine
Event ID: 208
Date: 9/17/2007
Time: 2:09:03 PM
User: N/A
Computer: XXXXXX
Description:
SQL Server Scheduled Job 'MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb' (0xD3864F44666B084B85AE11128905F6AE) - Status: Failed - Invoked on: 2007-09-17 14:09:03 - Message: The job failed. The Job was invoked by Schedule 19 (Schedule). The last step to run was step 1 (Purge).
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
This warning repeated every minute.
The problem was that when we installed the adapter, the job mentioned above had it's owner changed from the local BizTalk administrator to the "regular" BizTalk user. We changed the user to match all of the other BizTalk jobs in SQL, and no more warning messages.
Thursday, March 01, 2007
EDI R2 Issue (Not a Bug)
In the EDI setup parameters for a partner (X12 Properties/Party as Interchange Receiver/X12 Interchange Envelope Definition/GS and ST Segment Definition), you can enter multiple lines to set up GS segments for different transactions for that partner. Normally, for an 867 the GS01 element should have the value “PT”, and the 852 should have the value “PD”. What actually happened is that if a particular line was set to be the “default”, the values on that line were being used for all transactions. And there is no way to avoid setting one of the lines as default.
The problem in this case went back to the EDI R2 tutorial. I blindly copied the parameters for my transactions from the outbound parameters that they had set up for the partner named "THEM". The target namespace was set to
http://schemas.microsoft.com/Edi/X12, whereas for my configuration it needed to be set to
http://schemas.microsoft.com/Edi/X12/2006. The ST1 value, version, and namespace are all used to identify the line that applies to the particular outbound transaction, and the rest of the parameters on that line are then used to build the GS segment. This is clearly specified later on in the documentation, on a page called "Configuring X12 Interchange Envelope Generation" under:
Development > Developing BizTalk Server EDI Solutions > Configuring a Party for an EDI Solution > Configuring X12-Specific Party Properties
Wednesday, February 21, 2007
BizTalk Orchestration Error Message
However, there are times when clicking on the shape doesn't show anything that looks incorrect. If that wasn't strange enough, there are times when the orchestration will compile even though it shows the error in the orchestration designer. And stranger still is something that I just noticed -- when I took out a send shape immediately following the Expression shape, the orchestration would no longer compile.
I have found 3 possible causes. This isn't intended to be an exhaustive list:
- This seems to occur most often when I try to wrap a string onto more than one line by using the "+" operator.
- In the orchestration view, one of the items will show an error. This should be pretty easy to fix from the orchestration view.
- Variables with identical names are declared in more than one scope. I'm not sure why this is a problem, but it does seem to be sometimes.
orchName = Microsoft.XLANGs.Core.Service.RootService.ServiceId
Thanks to Scott Colestock for pointing this out. He suggests using the following code instead:
YourOrchName(Microsoft.XLANGs.BaseTypes.InstanceId)
Thursday, February 01, 2007
Where Are Those Darned R2 EDI Schemas
By the way, the new BizTalk EDI support in R2 is way better than in previous versions. They have schemas for every X12 EDI document I could want, plus lots more. There's also support for EDIFACT, which I haven't had the privilege of using yet...
Setting up the EDI transactions is also much easier. Actually, there are some transactions that I never was able to set up using the old EDI system.
To compare the old EDI system to the new, it took me less than 1/2 the time to set up a real life outbound 810 transaction. Not bad.
Tuesday, January 30, 2007
Note About BizTalk xpath Function
Here's a snippet that I have used successfully to assign a value to a field in an EDI 810 document:
n104Path = "/*[local-name()='X12_00401_810']" +
"/*[local-name()='N1Loop1'][3]" +
"/*[local-name()='N1']/*[local-name()='N104']";
xpath(Edi810, n104Path) = Response.myField;
Here's another that I have used to extract the value from the same field in an EDI 810 document (there's a difference in the xpath expression, here I'm using the XPath string() function):
// check n104 element (under "ship to")
n104Path = "string(/*[local-name()='X12_00401_810']" +
"/*[local-name()='N1Loop1'][3]" +
"/*[local-name()='N1']/*[local-name()='N104'])";
n104String = (System.String)xpath(Edi810,n104Path);
n104String = n104String.Trim();
I have seen examples that look like the following, but when I try them the string value is just null:
n104Path = "/*[local-name()='X12_00401_810']" +
"/*[local-name()='N1Loop1'][3]" +
"/*[local-name()='N1']/*[local-name()='N104']/text()";