Friday, October 28, 2005

Passed BizTalk Exam 74-135

I passed the BizTalk exam with a score of 906.

To prepare for the test I first did an online search of all references to exam. Below is the list I found, though I was asked none of the questions mentioned:

I was asked questions down to command line options on 'pipeline.exe'
Setting the logging levels on SSO
Interfaces implemented on a custom pipeline component.
GUIDs required for registering a Pipeline Component.....tough! tough!
When OLAP cubes get populated in BAM

messaging and orchestration gubbins you also know all about BAM/BAS/HWS/SSO - even down to default Excel filenames

Pasted from <
http://blogs.msdn.com/scottwoo/archive/2005/01/17/354647.aspx>

question on HWS! The exam tests a broad range of biztalk areas, from messaging, orchestrations, BAM, BAS, operations, installing, and custom development.

Pasted from <
http://weblogs.asp.net/OMagnusson/archive/2005/08/19/423079.aspx>

details about interfaces (which are needed and which are optional), command line apps AND what each parameter does (e.g. pipeline.exe, ssomanage.exe)
All about BAM - when cubes are created/populated etc.

Pasted from <
http://www.geekswithblogs.com/asmith/archive/2005/02/01/21673.aspx>

when running the BTS ConfigFramework.exe, you discover that the domain service accts are not created. What do you do? (a) MINIMIZE the ConfigFramework.exe, go and create the accts, then come back - maximize and carry on....or (b) EXIT configframework.exe, create the accts, then re-run configframework.exe

Pasted from <
http://www.geekswithblogs.com/asmith/archive/2005/02/01/21673.aspx>

having a key file to deploy the assembly
Pasted from <
http://saravanakumarmv.blogspot.com/>

Whats the best way to store SQL username and password encrypted password?

Pasted from <
http://saravanakumarmv.blogspot.com/>

Custom pipeline interfaces, some from Custom Adapter deployment, and even from Hub, Spoke seed.

Pasted from <
http://saravanakumarmv.blogspot.com/>

Develop a custom pipeline component, remember the interfaces you need to implement.
How to test a pipeline externally to BTS -> pipeline.exe tool (remember the command line parameters)
BAM -> develop an Excel worksheet etc. deploy it, profile tracking editor etc. OLAP cube creations. When the cubes get created, how they get populated with the non-realtime data (basically a DTS job needs to run here)
Install BTS - quickest way of installing a farm Sysprep, then run the configframework.exe on the machines.
When running ConfigFramework.exe, and the domain accts. arent created.....do you (a)minise configframework.exe, create accts, then maximise CF and continue on....or (b)close CF, create accts, then re-launch CF and continue.

Pasted from <
http://www.breezetraining.com.au/site/Default.aspx?tabid=30&amp;amp;mid=358&ctl=ViewEntry&EntryID=35>

Managing the SSO database and setting the appropriate audit and logging levels for SSO. ssoconfig -audit 3 3 (is the cmd line)
Setting up SSO for the HTTP send adapter
Name the stages that the receive & send pipelines go through

Pasted from <
http://www.breezetraining.com.au/site/Default.aspx?tabid=30&mid=358&ctl=ViewEntry&EntryID=35>


I also bought BizTalk Unleashed and as I went through the book I completed the Virtual Labs to make sure I understood the topic.

While the studying helped with BAS and BAM, my experience was the most helpful.

Thursday, October 20, 2005

Thought from BPIWF Conference

I noticed a theme about re-checking all variables in several presentations at the BPIWF conference in October. In the first Q&A session someone asked how to deal with rules changing while waiting on a response. So, for example, a purchase order request goes through BizTalk, is checked for the correct amount of inventory, and if there is enough inventory in stock is sent out for approval. The approval is not sent back for 2 days and at that point the inventory is lower than amount requested on the purchase order. How do we deal with the changes? For our example, we would check inventory twice, once before the request is sent and once after.

The question showed how simple business process can turn into complicated processes. Also, it is important to think of all scenarios when designing an implementation.

Monday, June 27, 2005

Cannot find the assembly Microsoft.BizTalk.Pipeline.Com­ponents

The error message given usually is an incorrect error message. When I received this error message it was due to a spelling mistake in the namespace when I manually created the data and then tried to submit to BizTalk. To get the correct error, install the Microsoft.Pipeline.Components.dll into the GAC again. There is no need to uninstall the component. Restart the BizTalk services after GACing the component. Rerun the process.

Attempted to access an unloaded AppDomain

This error appears when a change has been made to the web services, but BizTalk has not noticed the change yet. After building the web services, restart the BizTalk services and reset IIS. Note that it is better to change web services when all orchestration referencing the web services are unenlisted and the BizTalk services have been stopped.

Web Services and Correlation

For the past few weeks I've been trying to use web services and correlation. The problem I was facing was that I had two web services. The first web service would accept data from BizTalk and the second web service would send data back to BizTalk. The web services were two seperate entities and the response back to BizTalk was initiated by a manual process. Basically someone is going to be looking at the data that was sent to them and either accepting the data or rejecting the data. There was a LoadRef number in both processes that required correlation. Lastly, the web services used the type of XmlDocument.

The first issue I ran into was to correlate on the outgoing send shape. This required that I change parameter in the web service to a strongly typed parameter. The xsd is then created in the web reference of the project. Using the xsd I am set the promoted property on the reference xsd. In the orchestration I was then able to set the incoming message to a message of the web service request. Since the web service requires that the incoming variable be of a type of XmlDocument, in the web service mehtod I immediatly change the strongly typed item to XmlDocument using XmlSerializer.

The second issue I had was correlating on the return data. I could not change the format from XmlDocument. I discovered that two items needed to be set in order for correlation to work. First, the namespace must be the same namespace. Second, the qualified name must be set to the assembly properties that can be found in the GAC or properties in the BizTalk explorer. The Microsoft.XLANGS.BaseType.Any would not work. When set to type of Microsoft.XLANGs... the promoted property could not be found. On the receive SOAP adapter set the pipeline to XMLReceive.

Wednesday, June 08, 2005

Internal SOAP Processing Failure

When running web services through BizTalk either give ASPNET user access to the BizTalk management database, or impersonate the BizTalk services user in the web service's web.config. If impersonating the BizTalk services user, give access to C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files folder. These changes should solve the Internal SOAP Processing Failure error.

Tuesday, May 24, 2005

BizTalk 2004 and SQL Server SP4

Installed BizTalk 2004 with SQL SP4. The installation worked and have had no problems with BizTalk. BAS and BAM services were not installed, so the service pack has not been used with the Analysis Services.

Friday, April 01, 2005

Tuesday, January 04, 2005

SAP Adapter for Biztalk 2004 - Tips

After uninstalling the SAP .NET Connector v2.0 and installing version 1.0.3, I finally got the BizTalk SAP Adapter to work. Here are some tips for those who are using the Adapter but do not understand SAP:

There are two types of SAP server hosts that can be used in the Send Port: ASHOST or Application Sever Host and MSHOST or Message Server Host. For Send Port, there is a choice of ASHOST and MSHOST. To use the ASHOST fill in the Application Server data. This includes Client, Language, System, and System ID. To use the MSHOST, fill in the Message Server data only. This includes Group, Message Server, and R3Name. For both servers, the username and password must be included. You can tell which server you have implemented by the Adapter Namespace created after pressing "OK". You will see either sap://AS.. or sap://MS...

For the Receive Port, an SAP gateway host is used. I have not spent much time working with the Receive Ports, but from what I can tell the following must occur:

• The .NET program must register itself on the SAP gateway host (The Receive Function does this for the developer)
• The SAP system and the .NET program must implement the same method interface, for example, the function module name and parameters from the SAP system.
• The SAP system initiates the call to the .NET program using the CALL FUNCTION DESTINATION keyword (Important for the SAP Developer)
• The .NET program must return the appropriate parameters to the SAP system.

Virtual Biztalk Server Labs

This is from Scott Woodgate's blog.

Microsoft has set up a Virtual Lab that allows users to go over BizTalk 2004 with out installing BizTalk. This will be very handy for new users and for people like me who have knowledge of such items as the Business Rules, but have not implemented them. Before development, I can use this as a refresher course.

One last thing, the Firewall port must be open.

http://msdn.demoservers.com

BizTalk SAP Adapter and SAP .NET Connector v2.0

My previous post was incorrect. I was working on the SAP Adapter for BT2004 last week and kept thinking that my lack of knowledge with SAP was preventing me from being able to use the adapter. However, it turns out it was lack of compatibility with the SAP .NET Connector that was the problem.

I was starting to think that was the problem, but I needed proof for the client. So we asked Microsoft and the answer is that no the 2.0 connector does not work with the BizTalk SAP Adapter. The steps to install the correct version are as follows:

If you are running the 2.0 adapter you need to do the following:

1. Remove the SAP adapter from the Biztalk Admin console

2. Uninstall the SAP adapter for Biztalk 2004

3. Uninstall the 2.0 connector

4. Install the 1.0.3 connector from your SAP download location.

5. Install the SAP adapter again.

Next step for me, as I am having a hard time getting version 1.0.3, is to create a custom adapter using version 2.0 of the .NET connector.

SAP Adapater v2.0 for Biztalk Exception

After installing the SAP Adapter v2.0 on my local server, I tried to setup a receive location and a send port using the adapter. I created the receive location but started getting the following error:


The Messaging Engine failed to create the receive adapter "SAP". Reason: "Exception has been thrown by the target of an invocation."


I removed the receive location, but continued to get the error. After trying many different things, including changing the permissions on the Bin folder under the Program Files...SAP Adapater directory, I refreshed the host instance the adapter was running under. The error disappeared. The error does come back when I enable the receive function, though I do believe I have the incorrect information in the receive function, which causes the error.


File Receive Location

Recently I ran into a situation where a file receive location was intermittently becoming disabled with the error:

Event Type: Error
Event Source: BizTalk Server 2004
Event Category: BizTalk Server 2004
Event ID: 5649
User: N/A
Description:The receive location "[FilePath]InputInterfaceFiles\MM*" is shutting down. Details:"The FILE receive location [FilePath]InputInterfaceFiles\MM* exhausted the network retry attempts. ".

Currently there are several receive locations setup to point to the same directory. The directory is on a remote server, but the network between the servers is very reliable. And it seemed that since only one receive location was disabling, that the network was not the cause.

To solve this, I had developed an EnableReceiveLocation script that would run using the Scheduled Tasks. But, I wanted to know why the receive location was disabled. Microsoft provided me the answer. The File Receive Locations can poll the directory as well as use the folder change event. When both the change event and the polling action occurs at the same time, the receive location becomes disabled. The directory polling can be changed or disabled using the registry values found in File Adapter Configuration and Tuning Parameters.

SuspendedQListener Resumable Items

In order to ensure that both the suspended and suspended_resumable items events are raised through the SuspendedQListener the AddWatcher select statement must be changed to:


eventWatcher = new ManagementEventWatcher( new ManagementScope("root\\MicrosoftBizTalkServer"), new EventQuery("SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE TargetInstance ISA 'MSBTS_ServiceInstance' AND (TargetInstance.ServiceStatus = '4' OR TargetInstance.ServiceStatus = '32')"));

The ServiceSuspendedEventHandler and the startListening select statements must be changed to:


"SELECT * FROM MSBTS_MessageInstance WHERE ServiceInstanceStatus =" + (uint)ServiceInstanceStatus.Suspended_Not_Resumable + " or ServiceInstanceStatus = " + (uint)ServiceInstanceStatus.Suspended_Resumable;

Most of the time items are suspended with out being able to be resumed, but items will become resumable if the receive location is enabled, but the send port has been stopped.


MSBTS_ServiceInstanceSuspendedEvent Issue

The MSBTS_ServiceInstanceSuspendedEvent does not fire when the data is suspended as resumable.


To ensure that the resumable suspended item is noticed, the following WMI select statement must be used in the SuspendedQListener:


SELECT * FROM MSBTS_MessageInstance WHERE ServiceInstanceStatus =" + (uint)ServiceInstanceStatus.Suspended_Not_Resumable + " or ServiceInstanceStatus = " + (uint)ServiceInstanceStatus.Suspended_Resumable;


The SuspenedQListener does not have the ServiceInstanceStatus.Suspended_Resumable value in the select.