Things hard and not so hard.... RSS 2.0

Folks - my blog has moved to

# Tuesday, 18 September 2012

Here's something I go this morning which I think is a SharePoint error:

Tuesday, 18 September 2012 10:53:25 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
SharePoint | 2010
# Thursday, 30 August 2012

I recently ran into an interesting one while building some InfoPath forms for SP2010/2013 forms services.

I wanted to return some Rich Text (XHTML) fields back from a WCF WebService call.

I was at the point as a developer, where I couldn’t even say ‘Works on my machine…’.

The problem was – no matter what I tried, I would always have *plain text* and no ‘richness’ of the Rich Text. Didn’t work for me.

So I have:

1) a basic WCF Web service – running on my dev environment.

2) an InfoPath Form that makes the call and displays the results.

The WCF Service:


This is the field that I eventually want to return as RichText to InfoPath.

Here’s the Service Method code (which basically goes into a file and returns back a list of clauses) – just focus on the CONTENT = …GetXHTMLRichText(…)



InfoPath and Returning a RichTextField
2 things need to happen for this to work.

1. When InfoPath adds the WCF Service to the form, it needs to ‘detect’ the field correctly when it build the underlying schema.


You need (nb – ‘Content’ is my field name):
<xs:element minOccurs="0" name="Content" nillable="true">
                <xs:complexType mixed='true'>
                        <xs:any minOccurs="0" processContents="lax" maxOccurs="unbounded" namespace=""></xs:any>


Note the namespace on the ANY element above – this is the winner to tell InfoPath that this is a richtext field.

2. When returning data via this field (in my case the ‘Content’ field), it needs to be in a certain shape, as in:
<Content xmlns=http://yournamespace>
    <span xmlns="">Rich text here</div>

Your rich text content needs to be ‘wrapped’ for InfoPath to play nicely with it.

This was the purpose of my GetXMLRichText method as



The gotcha:

When I pointed InfoPath at my webservice and added a service reference I was getting back a SimpleType for the field and not a ComplexType/Rich Text field.

The WCF Service WSDL was ‘almost there’ but not close enough:

The Content field described in a ComplexType which is almost there, but not quite.

It’s missing the <xs:complexType mixed=’true’>…<xs:any namespace=’’ …/>. The rest were good.

The fix:

Cutting a long story short, the simplest way forward here was to simply edit the form components that InfoPath had built and correct the schema. Then reuse the form.

The form looks like this:



From the File->Publish->Export Source Files you can get to the source and edit the correct schema (XSD) file.

Close the form down in InfoPath (or you may even need to close InfoPath) to edit the Schema.


You may need to hunt through a few of them to find the right one. My file was GetKCCTerms12.xsd

Modify, save and close that file.

Right click on manifest.xsf –> Design to launch InfoPath and then select Save As to work with it as *.XSN form (*.xsn files are just CABs with all these files inside)


The final result as viewed from an InfoPath form – notice the bolding sent through.



Thursday, 30 August 2012 21:25:47 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
.NET Developer | Dev | SharePoint | 2010 | Tips
# Friday, 10 February 2012

You know it’s a Friday when…who can spot the ‘yes/no/cancel’ buttons?


Friday, 10 February 2012 11:09:15 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
SharePoint | 2010 | Tips
# Monday, 04 July 2011

See you there folks…I’m coming up from the trenches to share what’s in the real world with the class…content types, deployments etc.

Hope to see you there.





Sydney | SharePoint 2010 Bootcamp

“The best course I have done in years!”

“A fantastic course. Mick really has depth of knowledge and is a very engaging trainer”


REGISTER TODAY - 4 seats left!

Special offer of 15% discount if book & pay before June 30th 2011.




This is a 5-day bootcamp designed for both IT Professionals and Developers packed with fun and technical training to explore the features of SharePoint 2010 ‘out of the box’.

 At course completion students will be able to upgrade their SharePoint V3 sites/portals to SharePoint 2010, to implement and extend Microsoft Office client side solutions, and also implement custom workflows developed in Visual Studio.

 They’ll be equipped to care for their SharePoint farm, back it up and restore it, and set up and configure SharePoint 2010 infrastructure. Architecting the portal and sub-sites layouts is streamlined using best strategies and known best practices within the SharePoint space.

 Students will create custom WebParts and SharePoint customisations easily, as well as site wide features, event handlers and InfoPath Forms based solutions. They will also explore Excel Services and Business Intelligence Offerings.

 Be ready to roll up your sleeves and start your adventure here!

Date:                     Monday 25 – Friday 29 July 2011
Instructor:           Mick Badran – MVP
Location:             Breeze Office
Edgecliff Court,
                                Suite 5a
2 New McLean Street, Edgecliff NSW 2027

Time:                    8.30am – 4.30pm
Duration:             5 Days
Course Price:     $3,450.00 + GST

Register NOW: Emmav(AT)breeze(DOT)net(NO DOT)



Monday, 04 July 2011 21:51:23 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Events | SharePoint | 2010 | Training
# Wednesday, 23 March 2011

The core client DLLs are now available as a separate download.

The strange thing is that when you install these on your machine it still puts them under the c:\program files\common files\….\Web Server Extensions… etc.

The main dlls are:

1: Microsoft.SharePoint.Client.dll

2: Microsoft.SharePoint.Client.Runtime.dll

& the Sliverlight client dlls.

Given the directory paths, it maybe worth just grabbing the dlls you need for you solution and deploy them as part of the package.

Wednesday, 23 March 2011 18:26:14 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
# Wednesday, 09 March 2011

Firstly thanks for all that attended my 5pm - ‘fireside’ session.

I definitely was a first for me having a session so late in the day. I took my shoes off, wiggled my toes and got into it up on stage.

The session was pretty light and easy to follow along as to get bogged down into the deep technicalities of data storage within SharePoint was going to put all to sleep.

During the session I spoke about (& demo-ed) each approach from Site/Web Property bags, Custom Service Apps, Lists/External Lists Pros and Cons of each – all good.

Here’s my slide deck guys – Enjoy.



Wednesday, 09 March 2011 23:53:37 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [3] -
Events | SPC2011 | SharePoint | 2010
# Thursday, 24 February 2011

Hi folks, as promised here’s my little slide deck for the presentation given last week. We had a great audience with some very interesting questions.

Thanks all that attended as part of the Microsoft Partner Readiness program. Hope you’re enjoying and feel free to give me feedback as to what you’d like to see more of and less of.

Have fun,



Slides in ZIP PPT Slide Deck

Thursday, 24 February 2011 14:41:45 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
Events | Recordings | Readiness | 2010 | Training
# Thursday, 27 January 2011


While looking into an authentication problem I discovered this ‘new’ header sent back from a SharePoint 2010 machine.

Health Score? hmmm… I thought, what’s the max and what’s the min values. Is this good/bad? or don’t care?

So SharePoint 2010 has several Throttling features it used such as Client Auto Back-off which predominately when triggered, prioritises HTTP requests – such as HTTP POSTS are non delayed or throttled, but HTTP GETs are and new HTTP connections are throttled.

Here is one MS page that barely describes the Header – could do with updating that one.

SharePoint 2010 determines the health of a server by initially looking at system counters.

Let’s dig further….

Upon Reflecting the classic Microsoft.SharePoint.dll, there’s a Microsoft.SharePoint.Diagnostics section which I thought would be a great place to start. I found a
SPWebFrontEndDiagnosticsPerformanceCounterProvider class (amongst others there’s a SPDatabaseServer class as well)


The line above collection[0] = …. refers to the following collection


So putting all this together, the performance counters are:

  • WebAppPool - “SharePoint Foundation”
    • Global Heap Size
    • Native Heap Count
    • Process ID
  • OWSTimer & W3WP
    • Private Bytes
  • Processor (_total)
    • Processor Time

It appears the main class behind all of this is
SPHttpThrottleSettings where it appears that the throttling setting is turned off in ‘Single-Server’ deployments.

Digging further I came across the big-daddy class of it all (I think) -

SPPerformanceInspector – notice the method IsInThrottling() and the other is 2 constants that describe the displayed Throttled messages.

I also noticed another method on this class SetupRegKeyHealthScore.
Where HKLM\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0\WSS\ServerHealthScore is the actual value you want to assign.


A value of 0 is great, 10 is bad. Over 10 means the server will go into Throttling (letting your clients know as well).

There’s many other things here, but I’ve got to head swimming.

Hope we unraveled this mystery a little more.


Thursday, 27 January 2011 16:43:16 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
SharePoint | 2010 | Tips
# Monday, 17 January 2011

I recently came across a SharePoint Portal that previously was working a treat up until Christmas (just gone) and then the client got this on their Create Site Page:


So the good old “Parameter name: key” error…that old chestnut I thought (like I had any idea at that stage).
Null – is always an interesting thing. So something is going through a collection and not finding the value, not that they should have tested for the existence of the value first…but we’ll leave that for another story.

Why this was happening now? I haven’t got to the bottom of it, could be an update? security patch? SQL update? code somewhere? I find these things happen on the night before an important release date.

So after sheer luck of me just ‘doodling’ on the Create Site Page, this appears to have fixed it:


From the highlighted area – just simply fill in the empty(null) search box EVEN though we are Creating a Site here.

Go figure…

Do I add SharePoint to the Wonders of the World list?

Monday, 17 January 2011 12:33:00 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
SharePoint | 2010 | Tips
# Wednesday, 17 November 2010

Hi folks, I’ve got a lot of requests for when/where these are on, so we’re off and running next week in Brisbane with 2 seats left.

Just a quick blurb on the course -

The Breeze SharePoint 2010 Bootcamp has been designed to provide just that. Our customers asked for an in-depth, technical, customized course that, if they were to spend $$s on just one SharePoint  2010 course this year, would give them enough knowledge of the technology to build real world solutions.

These bootcamps have been written for the ITPro & Developer who need to upgrade their SharePoint skills, or are just starting out with SharePoint 2010.

Check them out HERE

Wednesday, 17 November 2010 09:55:16 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
Events | SharePoint | 2010 | Training
# Monday, 25 October 2010

Here’s something that I hope to save a few hours to you – InfoPath Forms Services.

I recently ran into this dreaded error – "InfoPath Forms Services is not turned on” when trying to configure it from within SharePoint Central Administration –> General Application Settings.

Forms Services is part of SharePoint Enterprise Services (usually activated via a Farm/Web Application/Site Collection or Site feature) and it relies upon the State Service.

So on our intranet, we’re revamping some InfoPath forms that were working in SP2007 and a new SP2010 using the database detach/attach method saw the intranet up and running…almost…except for this InfoPath Forms Services.

Most posts on the web talk about simply not having the feature enabled for either a Site collection, and/or Central Admin (and various other red herrings in my case)

Basically my source of truth was SharePoint Manager 2010 (great tool from CODEPLEX) which allows connections to SharePoint via the APIs as a standalone application (tip: make sure you launch it in ‘run in administrator’ mode).

From here I saw that on my install I was missing Forms Services listed in the Farm’s Service Applications

I initially thought it was some permissions issue and that I couldn’t see the service under that account (even though I was farm admin), so I launched and checked under the installer account and got the same result.

My next questions were: How does Forms Services become missing? How do you manually install/enable it?

In this case, I had a classroom SharePoint 2010 VM easily available and looking at it through SharePoint Manager, low and behold the Forms Service service was there!! Listed.

The machine I was having trouble with was a standard clean install, that I didn’t automatically run the Configuration Wizard on – as I wanted to have control over the naming of DBs. That was pretty much the difference between the two machines.

So I tried a few things:

a) installing just the InfoPath Web Admin Feature - stsadm -o installfeature -name IPFSAdminWeb –force and then activating it with stsadm -o activatefeature -name IPFSAdminWeb -url http://sp2010:10000 –force (no luck, it just gave me the InfoPath config under the Central Admin)

b) reran the configuration wizard

c) repaired setup

d) tried to run just the InfoPath Forms Services MSI from the install source.

…all to no avail.

InfoPath Forms Services – now with ‘deeper’ integration with SharePoint 2010, an internal service but with no real apparent way of getting to it.

The Answer:
I got thinking and I decided to attempt a backup of the Service from my VM and restore just the Service to the intranet Farm.

- Perform a backup of just the configuration



Then from there I did a restore (more in hope than anything) such that this process would ‘inject’ the right settings into the Farm Database.


At this point anything with InfoPath Forms Services on it was a bonus.

In any rate, here’s the backup file in ZIP format from my VM, that you can use to restore if ever faced with a similar challenge :)

Monday, 25 October 2010 20:02:10 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
SharePoint | 2010 | Tips
# Tuesday, 12 October 2010

Today I decided to crack open the BTS 2010 SharePoint WS Adapter to see if it takes advantage of the great new interfaces exposed by SharePoint 2010, specifically Microsoft.SharePoint.Client.dll and Microsoft.SharePoint.Client.Runtime.dll.

At a glance, the benefits of this new Client APIs are:

  1. Runs on a non SharePoint installed box.
  2. Lightweight and flexible – only get back what you ask for. As opposed to the classic SP Server API that populates the SPWeb collection (for e.g.) only if you just want the title field and not 10MBs worth of other data.
  3. Batch approach – load up several commands and batch them over the wire when needed.
  4. Supports both read/write from the client back to SP Server.
  5. Uses XML and JSON over the wire – small and fast.
  6. We can’t do *everything* we can on the Server Side – e.g. Service Application management, i.e. kicking off a search index crawl.

A little piccy of what’s going on:


Some classic piece of code to achieve document library reading:

1 static void Main(string[] args) 2 { 3 ClientContext ctx = new ClientContext("http://intranet"); 4 Web web = ctx.Web; 5 List docs = web.Lists.GetByTitle("Shared Documents"); 6 ListItemCollection items = docs.GetItems(CamlQuery.CreateAllItemsQuery()); 7 ctx.Load<Web>(web); 8 ctx.Load(docs); 9 ctx.Load(items); 10 ctx.ExecuteQuery(); 11 Console.WriteLine("The list has {0} items.", docs.ItemCount); 12 foreach (ListItem item in items) 13 { 14 Console.WriteLine("Item:{0}", item["Title"]); 15 } 16 //delete an item. 17 //items[1].Update(); 18 //items[1].DeleteObject(); 19 //ctx.Load(items); 20 //ctx.ExecuteQuery(); 21 Console.ReadLine(); 22 }

Note: Line 10 is where all the magic happens – if you imagine, we load up the client OM classes and the props etc. are all ‘blank’ until we do an ExecuteQuery() which then populates what we ask for.

The above sample is pretty simple showing how to connect to a document library on a ‘remote’ server (security allowing – I didn’t add a ctx.Credentials=… line in the above, but all possible).

So let’s move on a crack open the BTS 2010 SharePoint WS Adapter…

Just before we go there I’d like to point out that the Microsoft.SharePoint.dll (aka Server API) has the ability to connect to remote servers, although the code needs to be executed on a machine that has a local SharePoint install.


SPSite site = new SPSite(“”);

SPWeb web = site.OpenWeb();

What I am trying to avoid with the BTS SharePoint adapter is the need to have the ‘BTS Web Service’ component installed on remote Farms. Just complicates the issue far too much with the SharePoint admins.

The BTS 2010 Story

I setup and installed the BTS SharePoint WS Adapter through the Configuration.exe tool successfully.

Essentially this tools runs a ‘web site check’ to make sure SharePoint is successfully setup and installed.


To make this happen, the configuration tool runs either:

  1. Microsoft.BizTalk.KwTpm.StsOmInterop3.exe – for WSSv3
  2. Microsoft.BizTalk.KwTpm.StsOmInterop4.exe – for WSSv4

to determine the site as follows:


Note: The URL and note the URL in the BTS Configuration above. Here I’ve already configured the adapter and I’m just showing the commands that the configurator runs behind the scenes.

Once configuration is complete you will see a new virtual directory added  to your selected site e.g. http://intranet.

As shown in IIS Manager.


Depending on the SharePoint version this virtual directory will map to:

  1. C:\Program Files (x86)\Microsoft BizTalk Server 2010\Business Activity Services\BTSharePointV4AdapterWS
  2. C:\Program Files (x86)\Microsoft BizTalk Server 2010\Business Activity Services\BTSharePointV3AdapterWS (previous bts2009 adapter)

A Basic BTS/SharePoint picture

Essentially the BTS SharePoint Adapter consists of 2 parts:

  1. A BTS Adapter that talks to the BTS SharePoint WS. This is a ‘classic’ adapter and does not talk the newer WCF framework (which does have advantages and disadvantages)
  2. A BTS SharePoint WS – this does all the work against the SharePoint library and talks local SharePoint APIs.



Let’s look closer at the BTSharePointV4AdapterWS folder


- this folder, or addition needs to be available locally to whichever SharePoint site you are calling through the OOTB BTS SharePoint adapter, even though the SharePoint APIs support remote Servers.

- the bin folder has the Microsoft.BizTalk.KwTpm.WssV4Adapter.WebService.dll which is 78kb.

I wanted to find out whether this DLL used the new SharePoint Client APIs when meant having a peek at the ‘references’ of this DLL in IL.

Dissassembling Microsoft.BizTalk.KwTpm.WssV4Adapter.WebService.dll

Using .NET Reflector I was able to get this picture…


NOTE: on this list there is Microsoft.SharePoint, but not Microsoft.SharePoint.Client.dll
(this is not looking good…could be late bound, but… I doubt it)

Digging into the actual WssAdapter class we get the following of note:


The GetDocuments(string, string, string, Int32, DocExtOfficeIntegration)… is a key method.

The APIs show that the 1st parameter is a siteUrl (and following the implementation code through) which has the potential to point to another SharePoint server to make the connection (in the RequestInfo class if you’re going to dig yourself :))
Note: the PREVIOUS version, BTS2009 has the same Interface/Method signature and it requires the BTS SharePoint Adapter WS to be deployed on the remote SharePoint Server, even though the signature looks as though it will support the remote server.

So in conclusion the BTS SharePoint Adapter WebService has:

  1. NOT got any newer SharePoint Client API code within in.
  2. The ability to contact a remote server through the WebService APIs.
  3. But depends on whether the BTS Adapter will pass the ‘remote’ URL to the ‘local’ WS, or will the Adapter try to contact the remote SharePoint Server directly looking for a WS there???

I’m thinking it’s the latter…

A little more to unravel the SharePoint mystery…

Tuesday, 12 October 2010 13:08:00 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2010 | Insights | SharePoint | SharePoint | 2010
# Monday, 20 September 2010

The scene looks like this – while teaching a SharePoint 2010 class I decided to build a Feature that used one of the OOTB Service Applications of SharePoint 2010.


I decided to create a PDF Converter ‘Feature’ that used the Word Automation Services hosted in SharePoint 2010. Looking into the Word Automation Services, I’d say that if you’ve already got a PDF creation process going, then stick with it as it appears this service is pretty simple. However if you’ve got nothing, then Word Automation Services will be great!
(Having spent a previous life in a graphics company, there are many options that go with creating just that perfect PDF…I could find none of these here :()

(yes the pdf icon needs work…)

So I created a VS.NET 2010 Solution with a Feature.

The PDFConverter.cs is where the crux of the work is – the rest of the solution is working out just the right spot to call it.

Couple of Interesting Points about the Solution

1. ScriptLink – using this from a CustomAction within an Elements file allows to inject Script into a site where the Feature is Activated. There is also ScriptBody that allows you to inject script code right there.

2. RegistrationType – being declared as a FileType, currently this will work with docx. Feel free to experiment and extend out.
Also, seeing this action is activated on a list item, we need to track what list it came from {ListId} and the item in that list {ItemId} which is an integer.

1 <Elements xmlns=""> 2 <CustomAction Id="MicksPDFScript" 3 ScriptSrc="~site/_layouts/WordAutomationServices/Scripts/MoveItMoveIt.js" 4 Location="ScriptLink"> 5 </CustomAction> 6 7 <CustomAction Id="MicksPDFConverter" 8 RegistrationType="FileType" 9 RegistrationId="docx" 10 Location="EditControlBlock" 11 Sequence="106" 12 Title="Convert to PDF" 13 ImageUrl="~site/_layouts/WordAutomationServices/Images/pdf.gif" 14 > 15 <UrlAction Url="javascript:MicksOpenDialog('{ListId}','{ItemId}');"/> 16 </CustomAction> 17 18 </Elements> 19

3. Code that actually does the work – is pretty simple really with Folders and entire Document Libraries able to be passed to the Conversion Job.
One annoying thing is that below in Line15, conversionJob.Start() is called, really a job gets created and added to the Job Timer queue. Regardless of what goes on, the Started property always returns true.

Typically I’ve found the Timer Job to kick in every 5 mins to process the conversions and eventually a PDF file is seen in the library.

1 public bool Convert(string srcFile,string dstFile) 2 { 3 4 //create references to the Word Services. 5 var wdProxy = (WordServiceApplicationProxy)SPServiceContext.Current.GetDefaultProxy(typeof(WordServiceApplicationProxy)); 6 var conversionJob = new ConversionJob(wdProxy); 7 8 conversionJob.UserToken = SPContext.Current.Web.CurrentUser.UserToken; 9 conversionJob.Name = "Micks PDF Conversion Job " + DateTime.Now.ToString("hhmmss"); 10 conversionJob.Settings.OutputFormat = SaveFormat.PDF; 11 conversionJob.Settings.OutputSaveBehavior = SaveBehavior.AlwaysOverwrite; 12 13 conversionJob.AddFile(srcFile, dstFile); 14 15 conversionJob.Start(); 16 return (conversionJob.Started); 17 18 }

A couple of screen shots in action:




Of course this is not production ready, but it should give you a great start in getting there. To start, simply install and Activate the Feature on a site collection to see the functionality.

Go to a document library and activate the item drop down to see the Convert to PDF option. Must be a DOCX file currently.

Grab the VSNET2010 Solution and go for it – have fun.

Monday, 20 September 2010 21:06:48 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2] -
.NET Developer | SharePoint | 2010

The other day I had a need to create many word documents in code and publish them up to a SharePoint 2010 site.

1 static void Main(string[] args) 2 { 3 int iMAXDocs = 200; 4 string fpath = Path.Combine(Directory.GetCurrentDirectory(), "Docs"); 5 Directory.CreateDirectory(fpath); 6 Console.WriteLine("Path created"); 7 for (int i = 0; i < iMAXDocs; i++) 8 { 9 string docname = Path.Combine(fpath, "Doc" + i.ToString() + ".docx"); 10 CreateWordDoc(docname); 11 Console.WriteLine("Created Doc {0} of {1}", i, iMAXDocs); 12 } 13 14 }

So essentially it went something like that…with the key really being line#10 – CreateWordDoc(…). The CreateWordDoc routine also adds a couple of custom String properties to the document.

1 private static void CreateWordDoc(string docname) 2 { 3 using (WordprocessingDocument package = 4 WordprocessingDocument.Create(docname, WordprocessingDocumentType.Document)) 5 { 6 // Add a new main document part. 7 package.AddMainDocumentPart(); 8 9 // Create the Document DOM - which could be from a template XML file or so. 10 package.MainDocumentPart.Document = 11 new Document( 12 new Body( 13 new Paragraph( 14 new Run( 15 new Text("Hello World!"))))); 16 17 //add props. 18 CustomFilePropertiesPart pt = package.CustomFilePropertiesPart; 19 if (pt==null) 20 pt = package.AddCustomFilePropertiesPart(); 21 22 XmlDocument xdoc = new XmlDocument(); 23 xdoc.LoadXml("<Properties xmlns='' " 24 + "xmlns:vt=''>" 25 + "<property fmtid='{D5CDD505-2E9C-101B-9397-08002B2CF9AE}' pid='2' name='temp'> " 26 + "<vt:lpwstr>Done in Open XML</vt:lpwstr>" 27 + "</property>" 28 + "<property fmtid='{D5CDD505-2E9C-101B-9397-08002B2CF9AE}' pid='3' name='micksdemo'>" 29 + "<vt:lpwstr>SharePoint is Cool</vt:lpwstr>" 30 + "</property>" 31 + "</Properties>"); 32 33 //save the props 34 xdoc.Save(pt.GetStream()); 35 36 // Save changes to the main document part. 37 package.MainDocumentPart.Document.Save(); 38 39 } 40 }

All in all pretty straight forward using OpenXML Format SDK 2.0

Here’s the VS.NET2010 Solution of the above code -

Monday, 20 September 2010 13:44:10 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
SharePoint | 2010
# Friday, 27 August 2010

Integration - Course Agenda

Well as TechEd 2010 draws to a close this year in Australia, I had a great time getting away from it all and certainly experiencing a couple of firsts. For me this was one of the better TechEd’s I had been to – the sessions were a little light on, but the labs + exams made up for that big time.

So Scotty and I developed an Integration Pre Conference Training Session aimed at working out which MS Integration technology to run where – unscrambling the mess. We got a great turn out for the training in terms of numbers – we beat SharePoint 2010 dev + admin!!! :)

For all of you whom I had the pleasure of training this week – well done! I hope you enjoyed it and it was great sharing that time with you. The sun, sand, BizTalk and Azure…what could be better?? :)

As promised – here are the slides from those two days.

Keep smiling,

Friday, 27 August 2010 14:40:00 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2] -
AppFabricServer | Azure | BizTalk | Events | 2010 | 2010
# Wednesday, 28 July 2010

Olaf and I were cracking away on some SharePoint 2010 work which we thought should be simple…point SPMetal to the site and start LINQ-ing to our hearts content…..

with the one exception that we couldn’t select items from a list based on their Content Type.

By default SPMetal.exe doesn’t include these ‘system’ fields (apart from ID + Title – go figure) and the secret is to use an Override file.

The good oil is:
(Here’s a good article on how .NET Types are mapped to SharePoint -

The simple override/parameters file:

<Web AccessModifier="Internal" xmlns="">
  <ContentType Name="Item" Class="Item">
    <Column Name="ContentType" Member="ContentType" />


The SPMetal Command Line


The VS.NET Code

 static void Main(string[] args)
            using (BreezeDataContext dc = new BreezeDataContext("http://breezelocal"))
                var myitems = from i in dc.GetList<ContentListTraining>("My Content List")
                              where i.ContentType == "Training"
                              select i;
                var courses = myitems.ToList<ContentListTraining>();

                Console.WriteLine("There are {0} items",courses[0].Title);

Wednesday, 28 July 2010 18:10:19 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
.NET Developer | SharePoint | 2010 | Tips
# Friday, 16 July 2010

I’m in the process of planning a SP2007 to SP2010 ‘migration’ moving over the content database and other web artifacts.

I was making sure all things were ticked off and available in the new SP2010 environment such as – additional external scripts, paths, externally accessible images, webparts + flash movie files.

Migrated over – fired up the browser and after some minor tweaking most things came over, except for the flash movies.

The flash movie was not being displayed.

So naturally you think – must be a path, permission, activeX, flash object declaration, upload or even a masterpage might need a tweak…

Fired up FireBug in firefox and went to work – we could access the *.swf file directly from within the browser, but when the Page loaded with the link in there… no go.

In fact we got a ‘304 not modified’ response within FireBug – which seems pretty normal if the flash player already has the movie locally and it’s just comparing the server version versus the local…but still no flash playing.

SharePoint 2010 Web Applications restrict ‘active’ content – aka Flash out of the box.

After some digging and a seemingly unrelated option appeared in Web Application –> General Settings.
Browser File Handling - Default setting: STRICT

This was the culprit, setting this to permissive did the trick.


Wow! Have a great weekend folks!

Friday, 16 July 2010 13:51:43 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
SharePoint | 2010 | Tips
# Monday, 12 July 2010

Breeze SharePoint 2010 Bootcamp

The Breeze SharePoint 2010 Bootcamp is here!


Breeze SharePoint 2010 Bootcamps – Building Real World Solutions

The eagerly anticipated SharePoint 2010 Bootcamps are underway in Australia, and here’s what some of the excitement is about. Technical training this year is all about value for money. After the change in the economy, customers are more careful about where their training budget is being allocated. This year, customers need technical training that is relevant and an investment to their business. They are looking for knowledge that will improve business efficiencies, provide real world scenarios and give students the confidence to be hands-on when they leave the classroom.

The new Breeze SharePoint 2010 Bootcamp has been designed to provide just that. Our customers asked for an in-depth, technical, customized course that, if they were to spend $$s on just one SharePoint  2010 course this year, would give them enough knowledge of the technology to build real world solutions.

These bootcamps have been written for the ITPro & Developer who need to upgrade their SharePoint skills, or are just starting out with SharePoint 2010.

Be ready to roll up your sleeves and start your adventure here.

Sydney: 2nd August 2010

Price: $3450 ex GST

Register NOW: info {at} breeze {d.o.t.} net

*Quote this blog article to receive a special promotion.



p.s. anyone seen the octopus…I’ve got destiny with it….

Monday, 12 July 2010 23:21:46 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
SharePoint | 2010 | Training
# Saturday, 24 April 2010

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 left…then you’re better than me…right 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 :)



Saturday, 24 April 2010 22:13:39 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
SharePoint | 2010

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 things…so 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)

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,


Saturday, 24 April 2010 09:31:07 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
SharePoint | 2010
# Thursday, 22 April 2010

Well folks we are partnering with Education leaders in the APAC region Excom to deliver to you our Breeze SharePoint 2010 Bootcamp.

I’ve recently come out of that code cave…the place which I’m sure a lot of us know all too well. I discovered people…and conversations again :)

We’ve put together 13 modules of original material and labs to match based on real world examples. For e.g. Integrating with Oracle EB from SharePoint 2010 via the BizTalk Adapter Pack (being a BTS MVP I couldn’t resist that one).

I ran a course in Melbourne the week before last and it was a solid week which the students loved with the average score for the course being 8.2 (with 9 being the top)

Our next city is Sydney this coming month and I’ve managed to grab a couple of seats for you.

To Register in a city near you – click here



Thursday, 22 April 2010 09:01:58 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
SharePoint | 2010 | Training
# Monday, 19 April 2010

May 12th has always been the big date for the release of the products, the icons will be all completed (no more purple dots) questions about performance (how many, how big, how fast…) can all start to be answered in the real world about lists and list sizes.

The Launch of Office 2010 and SharePoint 2010 is due on May 12th.

Those on MSDN and TechNet will get access on April 22nd to start downloading.


Monday, 19 April 2010 16:08:41 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Office | SharePoint | 2010
# Tuesday, 06 April 2010

In true SharePoint fashion, I’ve updated the common lightup.xml file for SharePoint 2010.

Some things that are missing from below is an Admin link – I’ll update shortly as I’ve got to get back to a lab I’m finishing writing.
(note I’ve added ~sitecollection below, as all the samples I’ve seen leave this out)

Enjoy and happy Easter all.

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="">
  <!-- Document Library Toolbar New Menu Dropdown -->
  <CustomAction Id="UserInterfaceLightUp.DocLibNewToolbar"
    <UrlAction Url="~sitecollection/_layouts/ContosoLegalFunctionality/LightupHello.aspx?NewMenu"/>
  <!-- Document Library Toolbar Upload Menu Dropdown -->
  <CustomAction Id="UserInterfaceLightUp.DocLibUploadToolbar"
    <UrlAction Url="~sitecollection/_layouts/ContosoLegalFunctionality/LightupHello.aspx?UploadMenu"/>
  <!-- Document Library Toolbar Actions Menu Dropdown -->
  <CustomAction Id="UserInterfaceLightUp.DocLibActionsToolbar"
    <UrlAction Url="~sitecollection/_layouts/ContosoLegalFunctionality/LightupHello.aspx?ActionsMenu"/>
  <!-- Document Library Toolbar Settings Menu Dropdown -->
  <CustomAction Id="UserInterfaceLightUp.DocLibSettingsToolbar"
    <UrlAction Url="~sitecollection/_layouts/ContosoLegalFunctionality/LightupHello.aspx?SettingsMenu"/>
  <!-- Site Actions Dropdown -->
  <CustomAction Id="UserInterfaceLightUp.SiteActionsToolbar"
    <UrlAction Url="~sitecollection/_layouts/ContosoLegalFunctionality/LightupHello.aspx?SiteActions"/>
  <!-- Per Item Dropdown (ECB)-->
    Title="MY ECB ITEM">
    <UrlAction Url="~sitecollection/_layouts/ContosoLegalFunctionality/LightupHello.aspx?ECBItem"/>
  <!-- Display Form Toolbar -->
    <UrlAction Url="~sitecollection/_layouts/ContosoLegalFunctionality/LightupHello.aspx?DisplayFormToolbar"/>
  <!-- Edit Form Toolbar -->
    <UrlAction Url="~sitecollection/_layouts/ContosoLegalFunctionality/LightupHello.aspx?EditFormToolbar"/>
  <!-- Site Settings -->
    <UrlAction Url="~sitecollection/_layouts/ContosoLegalFunctionality/LightupHello.aspx?Customization"/>
  <!-- Content Type Settings -->
    <UrlAction Url="~sitecollection/_layouts/ContosoLegalFunctionality/LightupHello.aspx?General"/>
Tuesday, 06 April 2010 00:37:13 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
# Friday, 02 April 2010

While writing a lab for an up and coming SharePoint 2010 course I came across a few handy things.

I’ve always been a big fan of the developer dashboard and until recently the example code has been a little scarce.

Fortunately I’ve found a couple of gems

- one from Paul Andrew’s blog on how to get your own text in the debug tree
using (SPMonitoredScope sc = new SPMonitoredScope(“Some timed scope”))
  // some code in here that you think may take time

and for the right side of the screen:
SPCriticalTraceCounter.AddDataToScope(uCounter, “Your category”, traceLevel, “Detailed long message”);

- and the 2nd is an extension that sits on the Dashboard page that plots the time taken for each component to process/render in the tree (it does this client side using jquery and an ASCX control)

Check them out.



Friday, 02 April 2010 01:25:44 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
SharePoint | 2010
# Wednesday, 23 December 2009

Hi folks, we’ve used our SharePoint expertise and knowledge to distil SharePoint 2010 product feature set, to provide a rich 5 day course for you.

I believe with SharePoint in particular that as a developer you *need* to know details about the SharePoint environment that is running your code, and as an Admin, you need to know what and how the developer provides the additions/customisations that they do.

Check out the details and you can register with Microsoft here.

We’re really excited about the offering and have a great Christmas break.

See you soon… ho ho ho…

Wednesday, 23 December 2009 21:59:24 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
MOSS | Admin | 2010 | Training
# Thursday, 10 December 2009

Came across a great MS Article that gives you the broad brush strokes of updates and changes.

Very handy one

Thursday, 10 December 2009 21:22:47 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
SharePoint | Guides | 2010
# Saturday, 21 November 2009

Hi guys, I’ve been busy over the recent months always working and planning new ways to train, deliver and impart knowledge to *you* in a variety of different ways.

Truth be told our Region with respect to SharePoint Adoption and Knowledge, has been ahead of the curve worlwide – that you guys “SharePoint-ies”.
With the release of SharePoint 2010 soon-ish, we’ve been busy – to bring you the best value and the most effective training for your time.

For the release of SharePoint 2007 some numbers:

  1. We trained over 1400 students on our Breeze SharePoint Bootcamp (we cover technical in-depth approx 80-85% of major SharePoint features in a week. Not for the faint hearted)
  2. You guys demanded excellence and we gave you that.
  3. We train 50% of the time and consult 50% – we bring real world knowledge into the classroom, what works, what doesn’t from a business perspective.
  4. We’ve rolled out over 1000 different SharePoint 2007 sites (and are currently working on migrations to SP2010)
  5. The buck stops with me – which can be good thing…so I’m told :)

    The big congrats goes to you! For being driven, demanding better, demanding more detail and better knowledge, you demand that the bar is raised and meet and excel that challenge.

Breeze has partnered with Microsoft & Excom, allowing us to each focus on our strengths, delivering to you the best possible offering in this space.

I’m pretty excited to announce our SharePoint 2010 Series running in Melb + Sydney initially (+ others soon)
(running at Microsoft Offices)

A Special Blog Reader offer: Would you like me to Webcast these sessions for those whom can’t make it?
Add a comment on this Post to let me know – I’ll get back to you with details.
(we are giving away goodies and offers but I can’t tell you too much)

Here’s the formal blurb: ------ snip ------




Microsoft Australia, is pleased to invite you to a FREE Seminar on SharePoint 2010.

Melbourne – December 2, 2009

Sydney – December 11, 2009

Delivered by Breeze & EXCOM Education, this seminar is the first in a series that are designed to get you across the new functionality of SharePoint 2010 and importantly how your business can benefit.

SharePoint 2010 is the business collaboration platform that enables you to connect and empower people through formal and informal business communities, within the enterprise and beyond, and to manage content throughout the information lifecycle.

This next release of SharePoint has some exciting new enhancements for IT Professionals and Developers we think you will want to see for yourself!

This seminar is for all SharePoint enthusiasts from IT Professionals, Developers to Business Decision Makers and Information Workers. Bring along your questions to the unveiling of SharePoint 2010!

Seats are limited. Register NOW !!!!
For more information and to register, click HERE


Saturday, 21 November 2009 00:14:28 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [3] -
SharePoint | 2010 | Training
# Saturday, 14 November 2009

Recently at the SharePoint Conference (SPC2010) delegates were given a beautiful book with all sorts of developers bits.

The book stars 123 pages of great information, and improvements to many areas that we previously had pain with (lists, queries, and just CAML in general)

There’s also 6 walkthroughs (sort of like HOLs) with code etc. to give you a feel for customising SharePoint.

Grab the PDF version HERE













Some snippets which I found interesting from the book are:

  1. Some great object model options now for integrating with SharePoint.

    Points to note here:
    - Client OM + Rest are exposed as WCF Services (based on Client.Svc) and the Client OM is a batched model, so you transmit only what you ask for within Object Collection Hierarchies (unlike SPSite.AllWebs etc etc)
    - LINQ to SharePoint is initially created with SPMetal to create all the LINQ classes (there’s no ‘designer’ support for this yet, like LINQ for SQL – at least in this beta)
    - External Lists are an interesting one, you can develop plugins to expose two-way data syncs within SharePoint. I’m looking to reach out to SAP + Siebel systems when I explore this option :)
  2. Resource Throttling is turned on by default – previously developers could write code like SPList.Items… Usually on a Developer’s machine, with 5 items in a list this was not an issue, 8000 items in a list turns into a different story.

    SharePoint 2010 now has safe guards against this turned on by default.

Enjoy…I’m off to enjoy the sun.

Saturday, 14 November 2009 16:53:07 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
.NET Developer | Office | Deployment | 2010 | Silverlight
# Wednesday, 04 November 2009

When automation and word comes to mind, you usually think of COM, Interop and lack of speed with 40 copies of Word running in the background that you’ve got no idea how they got there.

Imagine having your own copy of ‘Word’ Server Side – callable through APIs you could easily create and manipulate Word Documents (Docx) and do a whole bunch of things through the OpenXML.

These Services are to live within SharePoint 2010 and imagine being able to create PDFs on the fly…. :)

Wednesday, 04 November 2009 06:51:32 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
# Tuesday, 03 November 2009

A few tidbits to share with you so far.

SharePoint 2010 architecture

WSS has gone through a name change (there was a time when WSS stood for ‘Web Storage Server’ that SharePoint V1 + Exchange 5.x were based on) and is now called SharePoint Foundation 2010.

I’m guessing that this name is more inline with Microsoft’s thinking around getting SharePoint as the backend/foundation in Companies, as Office is standard on user’s desktops.

Setting up your Development Environment:

(no more WSPBuilder…the SharePoint tools are baked into VS2010 beta 2. A nice feature is that you can select what a ‘Deploy’ does, or a ‘ReDeploy’ by essentially adding all these actions to your config, such as ‘restart IIS’, recycle app pool, make web.config change… You just package them up – nice!)

  1. SharePoint 2010 Beta Center - *** Great place to Start ***
  2. SharePoint 2010 SDK -
  3. Visual Studio 2010 Beta 2 - (this will work with the upcoming beta release of SharePoint 2010)
    Point to note: .NET 4.0 introduces WF4.0, however at this point SP2010 supports only 3.51. There are some *very* significant changes in Workflow between these 2 versions and we’ll have to wait and see the outcome. Performant 10-30x faster, reduced memory footprint, more flexible, clean XAML, more events etc etc.
  4. One last little point – where is the Public SharePoint 2010 download….unfortunately not yet will be soon and should be up on Dev Center Downloads -

In the meantime, be sure to check out the changes and enhancements to the SharePoint 2010 API model and some of the new capabilities such as:

  1. Powershell everything
  2. Check out LINQ/ADO.NET Entities integration and querying data
  3. Performing JOINS in CAML
  4. Client.svc – client side proxying, batching of requests and sending them through to SharePoint 2010. Very fast, as we only send what we need.
  5. Workflow exporting/importing from Visio->SPD->VS.NET->Deploy.
  6. Sandbox Solutions – now we can target our SharePoint Solutions to the Site Collection Level (rather than previously targeting only the farm). When we create this solution in VSNET2010, it rebinds to a ‘fake’ Microsoft.SharePoint.dll (v14.0.0.39 from memory) that introduces all the restrictions in your code and provides special intellisense. Commands such as ‘Run Under Elevated Security’… get caught on compile as these are not allowed.

    Could you be in the situation where your code compiles but the *real* SharePoint ‘foundation’ says ‘no!..that instruction is not allowed’ – it’s possible, as you’re not actually compiling against the real DLL.

    Currently there are several projects that you can’t sandbox based on their type – such as Workflow Projects. These still need to be targeted to the Farm.

    Worth checking out – specifically if you’re hosting SP sites.
  7. AJAX through out – even WebPart editor toolparts you can introduce AJAX there for alot of the lookups etc.
  8. Other noted feature is that Throttling is on by default – so if you say “list.Items.AllItems” and that returns back 50000 usually, SP2010 will error. You have to explicitly ask to make the request without Throttling (couple of properties you set before hand)
  9. Your WSSv3.0/MOSS sites can be *supported* in SP2010 and stay at their existing UI Level (look and feel), then at a later point we can flick the switch and see your site under the newer/AJAXY UI – through the APIs we can change it back SPWeb.UIVersion = 3 or 4.




Tuesday, 03 November 2009 00:39:37 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
MOSS | Admin | 2010

As far as I know there’s some good news and bad news…

Good news: the existing BizTalk SharePoint Adapter *should* work with SharePoint 2010 – you will however need to add ‘<rebinding>’ section to the existing adapters web.config *if* the SharePoint 2010 is installed locally to the BizTalk Server.

The ‘rebinding’ tells your local .NET app that even though you want V12.0.0.0 of the SharePoint APIs, V14.0.0.0 assemblies will give it to you.

Bad News: there’s no new BTS Adapter on the Horizon for this – AFAIK.


With SharePoint 2010 we now have the capability to involve many tighter technologies such as:

1) event notification, rather than polling for the adapter.

2) LINQ and ADO.NET Entities to query the Data.

3) SharePoint Client WCF Service – Client.svc . This is a lightweight and fast interface, where we can batch up requests, send them over the wire and get back just what we ask for.

4) Lists.ASMX web service (+ the others) for backward compatibility.

When I get some time…:D, I’m keen to develop a .NET LOB WCF Adapter.

Tuesday, 03 November 2009 00:05:01 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
2009 | BizTalk Adapter Pack | Insights | SharePoint | 2010
# Monday, 02 November 2009

Well – after spending *far* too long trying to get a little Red X to disappear from my BTS Configuration tool, so I can have a green light to configure the SharePoint adapter, I thought “There’s got to be an easier way”

Exhibit A – your honour. The SharePoint Adapter Configured.

So – what I did was roll my sleeves up and do this by hand.

This particular install – BTS09 x86, I installed WSS V3.0 with Sp2 and created a local sharepoint web application, site collection and had a whole bunch of SharePoint happiness coming back to me on http://biztalk (my server name).

All good I thought – except the configuration tool didn’t like what it found. I looked at logs, ran network sniffers and even manually ran the tool  Microsoft.BizTalk.KwTpm.StsOmInterop3.exe http://biztalk with success:


But still no joy in the configurator.

Here’s how to do it manually:

  1. Setup your local or domain SharePoint Groups
    Typically this is the ‘SharePoint Enabled Hosts’ Group – if it already exists on the domain, then great, if not create it. For this I created my group on the local machine.
    I also added as members, my biztalk service account and my Sharepoint Service Account.
  2. Configure IIS – BTS SharePoint WS Web Application
    1. Within the BizTalk Installed folders – e.g. c:\program files\Microsoft BizTalk 2009\Business Activity Services, you’ll find the set of WebServices to choose from. Select the right one for your SharePoint deployment.
    2. image
    3. As you can see I selected BTSharePointV3AdapterWS (for WSS V2 SP3, select BTSharePointAdapterWS).
    4. This is the folder you will point IIS to later.
    5. Open this folder and you’ll see a web application with a web.config.tmpl
    6. Copy the web.config.tmpl and rename the *copy* to web.config
    7. Open up your Web.Config in Notepad and configure as follows:

        <?xml version="1.0" encoding="utf-8"?>
                    <!--add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /-->

            <!-- Change debug="true" if you want to debug this web service -->
            <compilation defaultLanguage="c#" debug="false" />
            <customErrors mode="Off" />
            <!-- Windows Authentication is required for this web service. -->
            <authentication mode="Windows" />
            <!-- Impersonation is required for this web service. -->
            <identity impersonate="true" />
                <allow roles="SharePoint Enabled Hosts" verbs="GET,HEAD,POST"/>
                <deny users="*"/>

            <!-- Uncomment this block if you want to do some tracing of this web service -->
            <!-- <trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />  -->
            <globalization requestEncoding="utf-8" responseEncoding="utf-8" />

            <!-- The size of a document being posted to SharePoint depends on this setting -->
            <httpRuntime maxRequestLength="100000" />
            <trust level="Full" originUrl="" />
            <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                <assemblyIdentity name="Microsoft.SharePoint" publicKeyToken="71e9bce111e9429c"/>
                <bindingRedirect oldVersion="" newVersion=""/>

      1. (you can always go back and tighten security up on this when you’ve got it working).
      2. Note the ‘SharePoint Enabled Hosts’ – local group here.
      3. I’ve also removed the ‘Documentation’ tags so I could get some WSDL to make sure it works within the browser.
      4. Save your web.config within Notepad.
      5. NOTE: make note of the Folder Path to get here as we’ll need it in IIS next.
    8. Configuring IIS
      1. Bring up IIS Admin MMC snapin.
      2. Select your SharePoint enabled Web Site, I selected ‘Default Web Site’. Right click when ‘Default Web Site’ is Selected and select ‘Add Application’
        note: IIS 7.0 Manager shown.
      3. Configure this as follows:
        (Note – the App Pool User should be able to post into BizTalk and SharePoint)
        Physical Path: <path you had previously to either V2 or V3 of your BTSharePointV3Adapter…>
      4. Click OK.
      5. To Test your WS: browse to: http://<your server>/BTSharePointAdapterWS/BTSharePointAdapterWS.asmx
      6. You *should* get this:
        You can invoke the IsAlive function and get TRUE back.
      7. If not, then fix your IIS related errors, at this point you’ve got a WS that uses the SharePoint APIs (locally). Some things to check:
        1. Local file security – make sure the Web App Pool acct can access those directories.
        2. Windows Auth is turned on, on your Web App.
        3. Check IIS log files for clues.
      8. You’re done on the IIS side of things, let’s configure BTS Side.
  3. Configuring BizTalk Side
    Fortunately the WSS Adapter is installed as part of the BizTalk Runtime configuration – it’s just not configured. So as far as registering the adapter with BizTalk it’s already been partly done.
    1. Install the “I’ve been Configured Registry Keys” – I took these from a previously successful 2009 install.
    2. Once the registry keys have been applied you’ll need to go and configure the …\TPM key to reflect your setup as follows:
      1. In Particular – configure your SharePoint SiteID to the one you saw in IIS.
      2. image
  4. How is this Different for a x64 bit Install
    1. The IIS piece is the same.
    2. The BTS Piece – the Perf counters are the same,
      but the ..\TPM piece is under HKLM\SOFTWARE\WOW6432Node\Microsoft\BizTalk Server\3.0\ConfigFramework
    3. So you’ll need to ammend 1 of the above 2 REG files.

You’re done!

Why oh why is this so hard from within the Configurator.

NOTE: There *USED* to be a Registry key that told the BTS WSS Adapter where to go looking for the BTSharePoint WS – a URL (..STSServiceUrl). This eliminated the need for a local machine install of SharePoint/WSS. Alas…this is *NOT* the case with WSS Adapter post BTS06.

Monday, 02 November 2009 21:02:11 (AUS Eastern Daylight Time, UTC+11:00)  #    Comments [0] -
BizTalk | 2009 | SharePoint | MOSS | 2010
# Thursday, 22 October 2009

Grab a look at the SDK – here - and interestingly the BDC (now – Business Data Connectors) and BCS (Business Connectivity Services) are the enhanced former 2007 BDC.


I’ve got lots to talk about and show but where to start….maybe “once there was a developer…” :-)

Stay tuned.


Thursday, 22 October 2009 22:20:47 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
MOSS | Admin | 2010
# Monday, 19 October 2009

Last week I met up with Leonid (MCS SharePoint consultant) whom has a great upfront and practical view on life. Funny guy.

He mentioned to me about a SharePoint Faceted Search – which is a series of Search Web Parts that drill into the Search Index and return metadata tags, content types and a bunch of other stuff to give you accurate search results grouped by Author, Content Type, etc. (what ever you want)

Add them to the search results page of your SharePoint Search and you’re away. The webparts examine the Query String and have a bunch of customisations that allow you to tweak it just the way you like.

Great work Leonid!!!! (he’s a very clever guy – SharePoint Search is one of his passions…Red Wine is the other :) )
You can contact him via e.mail on: xsearch a.t. microsoft dot com

Standard View – notice the red regions, categories with the exact number of results. Where std. search says “..about 512 results”


Adding a Couple of Categories – and looking at Content Type Search.


Here I clicked on Author – Mick Badran and a Content Type of ‘Word’. You can see how the ‘advanced search’ is being visually built for me.

The best thing I like about all of this is that the RHS Web Part is totally customisable. The results all come from an XML File (property of the webpart) that you can customise – we can have icons, map different words/terms for things like ‘Word’ as a content type.
You can even add/remove your own.

The webpart has collapsible sections to it (you can even set how many items you want visible when collapse in the section!) and the collapsing/expanding is driven off Javascript calls back to the Server, so no round tripping.

Simply download, install the Solution, Activate the Feature for your Site Collection and add the Web Parts to your page. Easy as that to get started.

Brilliant – absolutely Brilliant (I’ve already had some of our users emailing me to say how easy it is)

Grab them here from CodePlex -

---- snip from the CodePlex Main Page ----

Project Description
MOSS Faceted Search is a set of web parts that provide intuitive way to refine search results by category (facet).
The facets are implemented using SharePoint API and stored within native SharePoint METADATA store. The solution demonstrates following key features:

  • Grouping search results by facet
  • Displaying a total number of hits per facet value
  • Refining search results by facet value
  • Update of the facet menu based on refined search criteria
  • Displaying of the search criteria in a Bread Crumbs
  • Ability to exclude the chosen facet from the search criteria
  • Flexibility of the Faceted search configuration and its consistency with MOSS administration
Monday, 19 October 2009 10:13:29 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
MOSS | Admin | 2010

With the SharePoint conference starting this week I’m sure there’ll be some great messaging coming out.

When we’re given the green light I’ll talk about the many fantastic improvements on the way to a SharePoint site near you!!!

Stay tuned….

Monday, 19 October 2009 05:57:39 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
MOSS | Admin | Guides | 2010
# Saturday, 10 October 2009

This whitepaper is typically centered around the BTS SharePoint Adapter and WSS V3.0/MOSS 2007.
(I’ll be posting details on SharePoint 2010 integration shortly… :) )

BizTalk + SharePoint: 1+1=3: Integration Best Practices

Brief Description

The integration of Microsoft BizTalk Server 2009 and Microsoft Office SharePoint 2007 brings a whole new set of capabilities to end users. Microsoft Office SharePoint Server gives BizTalk Server a “face,” providing human workflow features and dashboard functionality.

Saturday, 10 October 2009 10:35:04 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2009 | MOSS | 2010
# Thursday, 08 October 2009

Hi folks, I recently came across a tool (or enhancements to stsadm) that runs a series of rules against your farm to see if it passes some of the core requirements for upgrading to ‘a future release of SharePoint’ from WSS 3.0/MOSS 2007…so I’m guessing SP2010 :)

Check it out and let me know what you think – I haven’t run it yet…looking into it.

Have fun,


Thursday, 08 October 2009 22:09:45 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
MOSS | Admin | 2010
# Sunday, 04 October 2009

My buddy Kent Weare is launching a great series of posts on pulling/pushing documents in/from SharePoint and BizTalk. Using InfoPath to beautify what hard-core developers have known for years – that thing called XML.

Kent’s just rolling up his sleeves and getting cracking -

Well done Kent – looks great!

Sunday, 04 October 2009 22:15:38 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
2009 | 2010

Something that I’ve come across in recent years and it concerns me more and more…long running transactions.

For example let’s take an Insurance Company implementing a Claims Process.

The way it works is:

  • Design Long Running Business Processes around BizTalk Orchestrations
    Sounds great on the surface and since BizTalk 2004, the techniques for implementing this were easier.
    Basically – the BizTalk Environment will look after ensuring state is maintained, waiting Orchestrations are managed and Correlations are in place for return messages, that may return seconds, minutes, weeks or months later.

    So in this case we’d implement a main claims process manager which is runs for the duration the claim is active in the system.

    A Claim comes in, enters the System and the Claims Process Manager initiates and we’re off and running.

    A common technique with long running processes is to forcibly suspend biztalk messages that are in error. At a later date someone looks into the BizTalk Admin Console (or via a WMI query) and ‘deals with’ the suspended messages.

    The benefit of these suspended messages is that they potentially can be resumed right where they left off and these messages are stored in the MsgBoxDB awaiting attention.

The reason why I don’t think this works:

  • Messages are immutable – meaning that while they’re in the MsgBoxDB they can’t be changed (technically we *can* changed these messages as a hack, but it’s *not supported*). So if the message is incorrect and in the overall process, we might fix the problem and resubmit that message – we can’t do this from within the MessageBox. We have to export the message out and provide some ‘resubmit to biztalk’ port (usually a file port).
  • BizTalk MessageBoxDB is keeping state of the system. In process Claims are part floating around as part of our system (we could also be a bank processing Loans etc etc). If we lose the MessageBoxDB this could spell even more trouble.
  • Also system upgrade complexity moves up that extra notch, careful planning and various considerations need to be thought out. Pending Orchestrations have to be allowed to run through to completion; hydrated messages waiting to be sent through Ports, means that those ports must stay around until these messages are dealt with… and many other.
  • Backup – despite the recent advancements in SQL Server 2008 (mirroring) we can’t take advantage of it in the BizTalk world.
    The supported Technique is to use Log Shipping – The recommended backup interval is 15 minutes so worse case your system is out 15 minutes in the case of a crash.

    This is not entirely true… on busy systems the actual log shipping process may take between 15-30 mins to backup. This means that during the time while log shipping backup is running, the system is not being backed up. So all in all your system could be running for 1hr (approx.) with no covering backup.

    This essentially is the state of your solution.

What Does Work….in my opinion.

  • Manage the State of your System in another area, such as SQL or SharePoint.
  • Where possible keep the Orchestrations short running.
  • Upgrades are simplier
  • System maintenance is simplier.
  • Provide a MSMQ or File Inbound Port for ‘Resubmission into BizTalk’.
  • Use Content Based Routing to establish mutually exclusive processes.

Food for thought folks, from what I’ve worked on and noticed out in the field.


Sunday, 04 October 2009 22:05:03 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [3] -
2009 | 2010 | Tips
# Friday, 04 September 2009

Great to see some public information surfacing around SharePoint 2010 and development.

To get started (if you’re not already) here’s the SDK with a CHM file and PDF/XPS on “how to customise the ribbon”.

Doing a little digging in the CHM file, you can see (below) all the different Content categories with some special areas to note:

  1. There appears to be a Visio Server – I guess like InfoPath + Excel Services as they currently stand in 2007.
  2. AJAX + JSON seem to make an appearance at the foundational core – yay! less page reloads.
  3. WCF Services used (*.SVC) as expected and simplified. Also it appears that BDC systems are accessible via a SharePoint custom WCF Binding, making it possible to work on BDC based data from various applications within SharePoint. SharePoint might become the hub ‘repository’ for this sort of information.

Bear in mind *alot* of this information is ‘subject’ to change.

Certainly going fwd it should be very exciting to see what actually ships and whether some of the immediate constraints are dealt with.

Looks like we’re up for another Ribbon experience in this Version of SharePoint from within the Browser.


Friday, 04 September 2009 00:54:21 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
.NET Developer | MOSS | Office | Deployment | 2010
<2017 March>
 AppFabric CAT
AppFabric Windows Server Customer Advisory Team - New Blog.
[Feed] BizTalk 2006 - Windows SharePoint Services adapter
BizTalk 2006 Sharepoint adapter!!
 Breeze SharePoint 2010 Bootcamp
Breeze SharePoint 2010 Bootcamp
[Feed] BTS 2006 R2/EDI
[Feed] Chris Vidotto (MS BTS Legend)
Needs no intro....
 Mark Daunt
About the author/Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2017
Sign In
Total Posts: 608
This Year: 0
This Month: 0
This Week: 0
Comments: 270
All Content © 2017, Breeze