Ewan Fairweather is comming to BizTalk User Group Sweden

Performance has been  one of the more popular topics at the Swedish BizTalk user group, where we’ve had both Darren Jefford and Paolo Salvatori as previous speakers. This event is of a more practical and detailed level, and covers performance considerations from both a setup/configuration perspective as well as from a developer perspective. Ewan and I have been planning this event since mid January, but for various reasons we haven’t been able to do it until now. 

Sign up here

BizTalk Server Performance: Best practice

Session #1 – Instrument your BizTalk Server

Optimizing and verifying your BizTalk Server installation is not an easy thing to do. The documentation is good but very extensive. This presentation aims to guide you through the most important operations you need to do in order to boost the performance of BizTalk.

Session #2 – Performance Optimization Patterns

This session will present architectural, design, and development patterns to improve BizTalk processing performance. "Performance" can be expressed by latency and/or throughput, and this session will cover aspects of both. This will include pipeline and orchestration patterns to increase throughput, reduce latency, and reduce memory usage during BizTalk processing. We will also cover the results from BizTalk CAT recent Perf engagements.

Speakers:

Ewan Fairweather

Ewan Fairweather has worked for Microsoft for five years. He currently works as a program manager in the Business Platform Division on the Customer Advisory Team (CAT) working on large scale Integration and OLTP SQL applications.  Prior to this, Ewan spent three years working for Microsoft U.K. in the Premier Field Engineering team where he worked with enterprise customers, helping them to maintain and optimize their BizTalk applications. This included working in a dedicated capacity on some of the world's largest BizTalk deployments, predominantly within financial services.

Ewan coauthored the successful Professional BizTalk Server 2006 (Wrox, 2007) and has written many white papers for Microsoft including the "Microsoft BizTalk Server Performance Optimization Guide," which is available on the Microsoft Developers Network (MSDN) Web site. Prior to joining Microsoft, Ewan worked as a Cisco Certified Academy Instructor (CCAI) for a regional training organization, delivering advanced routing and networking courses. Ewan holds a bachelor's degree in computing with management from the University of Leeds. Outside of work, Ewan's hobbies include reading, taking part in as many sports as possible, and regularly going to the gym.

Ewan maintains his blog at http://blogs.msdn.com/ewanf

SharePoint: Error Upgrading SP ContentDB from Beta 2 to RTM (14.0.4536.1000 -> 14.0.4730.1000)

Well if you’re cracking on and updating your SharePoint Beta 2 Installs to RTM and
wanting to make it out the door while there’s some daylight leftthen you’re better
than meright now it’s dark! 🙂

Ok – so I figured, no probs just do a stsadm -o addcontentdb and
we’re well on our way, exactly the same from Beta 1 to Beta 2.

This time SharePoint RTM doesn’t want to play. I got this error:

Sequence [Microsoft.SharePoint.Upgrade.SPContentDatabaseSequence]
cannot upgrade
an object [SPContentDatabase Name=WSS_Content_Int2010] whose build
version

[14.0.4536.1000] is too old. Upgrade requires [14.0.4730.1000] or higher.

So as you can see the Version numbers of my Beta2 ContentDB
is close, but RTM is not playing.
 
I thought I’d take a punt and see what happened:
  1. Open up the ContentDB in SQL Management Studio and open up
    the Tables folder.
  2. Locate the Versions Table (down the bottom).
  3. Open the Versions Table in Edit Mode and modify
    the Rows which have a Version=14.0.4536.1000
    next to them.
  4. Simply change the version number to 14.0.4730.1000
  5. Save the changes
  6. Rerun the stsadm -o addcontentdb command
    and bob’s your uncle.

The ContentDB I used here was 18GB in size and all has come up trumps.

This may save you a bit of time and sure it’s a hack, but we’re now in RTM land.

Good luck 🙂

 
 

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

Nesting Scope shapes more than 19 levels

Nesting Scope shapes more than 19 levels

Hi all

As many of you know, I am writing this book on
BizTalk along side some great names of the community.

Anyway, I was just writing about the Scope shape for orchestrations and decided to
go through the documentation of this to see if I missed something. And indeed there
was a small detail I missed, which you can find at http://msdn.microsoft.com/en-us/library/aa560150(BTS.10).aspx –
it states that “You can nest scopes up to 44 levels deep.”

I thought that was a funny number and decided to test it.

So I started adding Scope shapes and at 19 nested Scope shapes I had this:

Scopes_19_levels

which looks just fine. BUT, after adding an expression shape to the content of the
19’th Scope shape and adding the 20’th Scope shape I get this:

Scopes_20_levels

which is not fine.

So basically, the orchestration designer will not show you the Scopes at level 20
or deeper. You can still add them, though – and it compiles just fine even at 47 levels
of Scope shapes, actually – haven’t bothered trying more levels than that.

Now, some of you (all of you?) may sit and wonder: Come on, how probable is it that
anyone will do that? An I completely agree – if you get above 10 levels of nested
Scope shapes you are most definitely going in the wrong direction 🙂 I just wanted
to see if the documentation was correct on this.

I hope this will help someone, but it probably won’t 🙂

—

eliasen

Upgrading from SharePoint 2010 Beta 2 to RTM

I’ve just spent the past couple of days looking into the ’upgrade’ process and I’ve
come out the other side. Here’s a quick jot down of what I encountered

  1. Environment: Single WFE (Win2K8 R2 x64) and a separate SQL 2008 x64
    ‘backend’. Currently running SP2010 Beta2 with content databases around 13GB
  2. I haven’t uninstalled any of the existing SP2010 beta 2 bits – this is a VM and I
    have a handy backup, so in case of emergency break glass was my plan b.
  3. Launched Setup.bat – up came the intro screen and I selected Install
    PreReqs.
    In my case the prereqs failed their first installed with it grumbling
    about the IIS Web Role not present (but this was an existing SP2010 server, so obviously
    the Web Role was present and correctly running).

    Ran the PreReqs again and all was fine 🙂

  4. Setup.exe – launched the product, provided a license key and we ran
    all the way through no problems. Interestingly thRege installer didn’t mention anything
    like “I found a previous version of SharePoint do you want to ”
  5. Configuration Wizard – this is where my trouble started.
    1. As the Wizard was launching, it appeared not to be able to recognise the
      fact that we were already in a farm. It was like we were running on a machine, where
      the DB Server wasn’t accessible.

      I ’removed’ the Server from the Farm (which were the only options in the Wizard for
      me)

    2. Re-ran the Wizard Take#2, supplied the details at the beginning,
      Server Farm etc etc and sent it on it’s way.
    3. The Wizard ran up to step 3 of 10 (where it configures the Farm DB
      + creates the SharePoint Web Services IIS Site) and then FAILED.
      What I noticed that the FarmDB was created successfully, but the IIS side was failing.
      (The error logs spoke about a socket based error – which I think was unrelated)
    4. Tweaking, rerunning the Wizard didn’t fix thingsso here’s my fix.
    5. I also uninstalled SP2010 RTM a few times and reinstalled, but same error
  6. The fix –
    1. Delete the \14 hive
    2. Delete the Registry Key (and all under it) HKLM\Software\Microsoft\Shared
      Tools\Web Server Extensions
    3. Uninstall/reinstall the IIS Web Role on the Server
  7. Repair the SharePoint install from rerunning Setup.exe –
    repair option.
    (you might be able to leave this step out, but I deleted the
    Web Server Extensions key after I installed SP2010, so I needed it to be rewritten)
  8. Run Config Wizard
  9. Upgrade any Content DBs you want to mount – through stsadm
    -o addcontentdb
    or Mount-ContentDB (powershell)
  10. >

    I’m sure you’ll be able to shorten this list of steps when you upgrade, but I’ve got
    to get on and configure this environment.

    Have fun,

    Mick.

SharePoint 2010 RTM and BCS Permissions

SharePoint 2010 RTM and BCS Permissions

 

If you are using SharePoint 2010 RTM and get the following error:

Access denied by Business Data Connectivity.

bdcerror

It likely is because by default on installation the BCS service doesn’t have any permissions
enabled at all.

If you go to your central administration site and manage the BCS service and look
at Metadata Store permissions you’ll see that it is empty

bdcempty

Obviously in a production environment you want to be very deliberate about setting
the permissions, but when you are developing you just want your code to work 🙂

Here’s a PowerShell script that will set the permissions on the Metadata store (and
all BCS models deployed after you run the script) to all windows users.  Again,
not something I recommend for a production machine – but something that is fine for
your development machine.

 1: $adminURL="HKLM:\SOFTWARE\Microsoft\Shared
Tools\Web Server Extensions\14.0\WSS\"

 2: $key
= Get-Item $adminURL 

 3: $adminurl
= $key.GetValue(">CentralAdministrationURL")

 4: Write-Host
">Central admin site "+ $adminurl

 5: Add-pssnapin
Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

 6:  

 7: Write-Host
Updating BCS persmissions 

 8: $obj
= Get-SPBusinessDataCatalogMetadataObject -BdcObjectType Catalog -ServiceContext $adminurl

 9: $right
= (1+2+0x10+4)

 10: $claim
= New-SPClaimsPrincipal -Identity 'c:0!.s|windows' -IdentityType
EncodedClaim

 11: Grant-SPBusinessDataCatalogMetadataObject
-Identity $obj -Principal $claim -Right $right

 12: Copy-SPBusinessDataCatalogAclToChildren
-MetadataObject $obj

 13: Write-Host
Complete



Check out my new book on REST.

Stray Text in BTARN Messages and BTARN Service Validation Failures

A recent bug found in BTARN processing can cause stray text to appear in response messages. The issue is a temporary variable not being cleared. Here is a sample from a recent case.


<ActionIdentity>
     <GlobalBusinessActionCode>Formally confirms the status of line item(s) in a Purchase Order. A Purchase Order line item may have one of the following states: accepted, rejected, or pending.</GlobalBusinessActionCode>
     <InstanceIdentifier>md.o1loqohc.efs41f.</InstanceIdentifier>
     <VersionIdentifier>V02.00</VersionIdentifier>
</ActionIdentity>


The Business Document Description is written to a temporary variable. It is only overwritten if “/ServiceHeader/ProcessControl/TransactionControl/ActionControl/ActionIdentity/description/FreeFormText” is populated. Since this is an optional value the temporary variable was not properly cleared leading to the stray text. A hot fix is available to rid the world of this menace.



A replacement S/MIME component is now available to remedy those cases with unexplained service validation errors. The error appears to be random, however in high volume processing the right circumstances happen frequently enough to generate a couple of failures a day. The “exsmime.dll” has to be updated to remedy the problem. The fix was to be included in BizTalk R2 SP1. Early releases of SP1 may not have the latest version, 8.2.254.0. The problem also exists in BizTalk 09.

BizTalk Benchmark Wizard – New release

The Benchmark Wizard was release earlier this year, and even though we got lots of good feedback we’ve also got requests for some changes.

If you haven’t yet heard about this tool, the purpose of it is to verify your BizTalk environment performs as expected. There are two different scenarios you can run, a Messaging and an Orchestration scenario. Each of the scenarios has been tested on various environments and configuration. The result of these tests has provided the tool with a set of KPI’s, which your test result will be benchmarked against. For more information about the Benchmark Wizard:

Benchmark your BizTalk Server (Part 1) – Overview

Benchmark your BizTalk Server (Part 2) – How to install

Benchmark your BizTalk Server (Part 3) – Drill down and analyse

The most common feedback is related to the fact that it was very difficult to meet the KPI’s. A reason for this is that the original tests where executed while global tracking was disabled. This was unfortunate as the DTA tracking has ~30% overhead. We have done a re-run of all the tests, and updated the KPI’s for the new version (shown at the bottom of this page).

Further more, there seams to be a question of how to interpret the result. What does “Succeeded” mean? Does it reflect the best possible result or good enough? To make this more clear, we’ve implemented the “stop light approach”, where if you’ve Succeeded you should be proud of yourself and make a blog post, while an Acceptable result is nothing to be ashamed of.     

 

 

There has also been some other fixes such as the resetting all the counters when you re-run the test, and fixing the CPU counters to show correct values.

Special thanks to Microsoft and Ewan Fairweather for letting me use their test lab!

Download BizTalk Benchmark Wizard from CodePlex

Scenario KPI’s: Messaging Single and Multi Message Box

# of Bts Srv

#CPU/Bts Srv

# SQL Srv

#CPU/SQL Srv

Msgs/Sec

Msgs/Sec

1 1 Quad (1) (1) 160 200
1 1 Quad 1 1 Quad 280 350
1 1 Quad 1 2 Quad 390 490
1 1 Quad 1 2 Quad 560 700
2 1 Quad 1 2 Quad 620 770
2 2 Quad 1 2 Quad 730 910
2 2 Quad 1 4 Quad 780 980

Scenario KPI’s: Orchestration Single Message Box

# of Bts Srv

#CPU/Bts Srv

# SQL Srv

#CPU/SQL Srv

Msgs/Sec

Msgs/Sec

1 1 Quad (1) (1) 110 140
1 1 Quad 1 1 Quad 170 210
1 1 Quad 1 2 Quad 190 240
1 1 Quad 1 2 Quad 220 270
2 1 Quad 1 2 Quad 230 290
2 2 Quad 1 2 Quad 260 320
2 2 Quad 1 4 Quad 300 370

 

Test environment:

Type Model CPU Type # of CPUs # of Cores/CPU Architecture RAM Local Disks OS Software
Database DL785 Intel Xeon 8 x 2.4 Ghz 4 x64 130 GB 2 x 72gb* Win2k8 SP2 EE 64bit SQL Server 2008 SP1
BTS Receive host R805 Intel Xeon 2 x 2.33 Ghz 4 x64 8 GB 2 x 72gb 10k SAS Win2k8 SP2 EE 64bit BizTalk Server 2009
BTS Send host R805 Intel Xeon 2 x 2.33 Ghz 4 x64 8 GB 2 x 72gb 10k SAS Win2k8 SP2 EE 64bit BizTalk Server 2009
Load server R805 Intel Xeon 2 x 2.33 Ghz 4 x64 8 GB 2 x 72gb 10k SAS Win2k8 SP2 EE 64bit BizTalk Benchmark Wizard
Back-end server R805 Intel Xeon 2 x 2.33 Ghz 4 x64 8 GB 2 x 72gb 10k SAS Win2k8 SP2 EE 64bit Indigo Service

* Storage: EMC Clarion CX-240 ( 5 solid state drives )

Configuration: