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:

Be aware of your Azure bill!

I have been playing around with Azure since it was first released at the PDC. I have since then done several demos for Microsoft and my employer Logica. The demos have been pretty much the same demo over and over, why I stopped the project rather than deleting it.

To be fair, it’s pretty clear stated that this will continues to accrue charges, but if you’re doing demos like I have, -Make sure to delete it!!!

I got billed ~$700 since Feburuary.

Promote properties in a EDI schema using the EDI Disassembler

I’ve doing a lot of EDI related work in BizTalk lately and I have to say that I’ve really enjoyed it! EDI takes a while to get used to (see example below), but once one started to understand it I’ve found it to be a real nice, strict standard – with some cool features built into BizTalk!

UNB+IATB:1+6XPPC+LHPPC+940101:0950+1'
UNH+1+PAORES:93:1:IA'
MSG+1:45'
IFT+3+XYZCOMPANY AVAILABILITY'
ERC+A7V:1:AMD'
IFT+3+NO MORE FLIGHTS'
ODI'
TVL+240493:1000::1220+FRA+JFK+DL+400+C'
...

There are however some things that doesn’t work as expected …

Promoting values

According to the MSDN documentation.aspx) the EDI Disassembler by default promotes the following EDI fields: UNB2.1, UNB2.3, UNB3.1, UNB11; UNG1, UNG2.1, UNG3.1; UNH2.1, UNH2.2, UNH2.3.

There are however situation where one would like other values promoted.

I my case I wanted the C002/1001 value in the BGM segment. This is a value identifying the purpose of the document and I needed to route the incoming message based on the value.

The short version is that creating a property schema, promoting the field in the schema and having the EDI Disassembler promoting the value will not work (as with the XML Disassembler). To do this you’ll need to use a custom pipeline component to promote the value. Rikard Alard seem to have come to the same conclusion here.

Promote pipeline component to use

If you don’t want to spend time on writing your own pipeline component to do this yourself you can find a nice “promote component” on CodePlex here by Jan Eliasen.

If you however expect to receive lots and lots of big messages you might want to look into changing the component to use XPathReader and custom stream implementations in the Microsoft.BizTalk.Streaming.dll. You can find more detailed information on how to do that in this MSDN article.aspx).

Communication with all MessageBoxes has now been re-established

Communication with all MessageBoxes has now been re-established

Microsoft have released a hotfix for information messages in the BizTalk Server 2009 event log that read something like “Communication with MessageBox <message box database name> on SQL Instance <SQL server instance name> has been re-established”, with event ID 6999 followed by a “Communication with all MessageBoxes has now been re-established” information entry with event […]