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

Folks - my blog has moved to

# 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

Whilst on my travels last week I also ran into Oleg Lofman (MCS SharePoint Consultant) whom amongst other things (showed me a great travel game - pointed me towards a tool called WIM2VHD.

Basically this tool allows you to go straight from a WIM file to VHD!! You can even specify an Answer file also. So no need to mount the ISO, go through the bootloader and copy all the files needed, then expand etc etc as part of the setup.

So seeing that Windows 7/Server 2008 R2 has a bunch of WIMs under the \Sources folder, you can simply go there and take your pick as to how extensive you want the base OS to be : Core…or something more!

Check it out:

As you can see below, it’s a pretty extensive and detailed tool: (you can even apply hotfixes to the VHD during this process)

--- snip from the above page ---


Usage: WIM2VHD.WSF /wim:<wimPath> /sku:<sku>
[/vhd:<vhdPath>] [/size:<vhdSizeInMb>] [/disktype:<dynamic|fixed>]
[/unattend:<unattendXmlPath>] [/qfe:<qfe1,...,qfeN>]
[/ref:<ref1,...,refN] [/dbg:<args>] [/copylocal:<localFolder>]
[/passthru:<physicalDrive>] [/signdisk:<true|false>]
Required parameters:
    The path of the WIM file to use when creating the VHD.  For example:
    Where X: is the drive letter of your DVD ROM drive.
    The SKU within the WIM to use when creating the VHD (e.g. "ServerStandard",
    "ServerDatacenterCore", "2", etc.).  This value can either be passed as a
    SKU name (typically the easiest method) or as a SKU index (which requires
    you to have manually inspected the WIM with a tool like IMAGEX.EXE).
Optional parameters:
    The path and name of the VHD to be created.  If a file with this name
    already exists, it will be overwritten.  If no VHD is specified, a VHD will
    be created in the current folder with a name in the following format:
    NOTE: If the language cannot be determined from the WIM, no <Lang> block
    will be included in the VHD name.
    For Fixed disks, this is the size in MB of the VHD that will be created.
    For Dynamic disks, this is the maximum size in MB that the VHD can grow to
    as additional space is required.
    If unspecified, a default value of 40960 MB (40 GB) will be used.
    Specifies what kind of VHD should be created: Dynamic or Fixed.
    A Fixed disk allocates all of the necessary disk space for the VHD upon
    creation.  A Dynamic disk only allocates the space required by files in
    the VHD at any given time, and will grow as more space is required.
    The default value is Dynamic.
    The path to an unattend.xml file that will be used to automate the OOBE
    portion of Windows setup the first time the VHD is booted.
    A comma-separated list of QFEs to apply to the VHD after the WIM is
    applied.  QFEs must be in the .MSU file format, which is the default
    QFE format for Windows 7.  They can also be provided in a .CAB format
    if you'd prefer to extract the .CABs from the .MSU files.
    To extract a CAB from an .MSU, use the following command:
    expand -f:win*.cab <.MSU file> <location to extract to>
    A comma-separated list of WIM pieces to apply to the VHD.
    A "WIM piece" is the result of a Split WIM, and typically has a .SWM
    file extension.  The first piece of the Split WIM should be specified with
    the /WIM switch. Subsequent pieces should be specified with /REF.
      ex: WIM2VHD.WSF /WIM:C:\split.swm /REF:C:\split2.swm,c:\split3.swm
    See IMAGEX.EXE /SPLIT /? for more information.
    Configures debugging in the OS on the VHD.
      /dbg:serial,1,115200 - configures serial debugging on COM1 at 115200bps
      /dbg:1394,10 - configures 1394 debugging on channel 10
      /dbg:usb,debugging - configures USB debugging with the target DEBUGGING
    Copies all of the files necessary to run WIM2VHD.WSF to localFolder,
    eliminating the need to install the Windows AIK or OPK.  This does not
    include any WIM files, just the binaries that WIM2VHD.WSF depends on.
    After this operating completes, run WIM2VHD.WSF from localFolder.
    If this switch is specified, no VHD will be created.
    Applies the WIM directly to the specified drive and makes it bootable.
    NOTE: The partition on the disk must be marked as ACTIVE in order to boot
    successfully. This action is NOT performed by WIM2VHD.WSF.
    Specifies whether or not WIM2VHD.WSF should leave a signature on the VHD
    that indicates what version of WIM2VHD.WSF created the VHD, and the date
    of creation.  The signature will be located at <VHD>:\Windows\WIM2VHD.TXT.
    The default value is "true".
    Copies the contents of folderToMerge to the root directory of the VHD.
    This includes all subfiles and subfolders.  Any files that already exist on
    the VHD will be overwritten.



This will certainly make my life easier when it comes to building VMs!!! Thanks Oleg for the tip.

Monday, 19 October 2009 10:24:16 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
Tips | WinPE

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

While on a current project and having a need to tweak (as always) how well BTS is processing these receives, I came across a Perf document on BTS 2009 Receiving.

This document below deals mainly with netTCP receive locations – oneway ports + oneway Orchs.



BizTalk Server 2009 Performance Optimization Guide

Brief Description

The BizTalk Server 2009 Performance Optimization Guide provides prescriptive guidance on the best practices and techniques that should be followed to optimize BizTalk Server performance.

Saturday, 10 October 2009 15:23:52 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2009

 image Service Pack 1 Beta

The BizTalk team are pleased to announce the availability of the beta release of Service Pack 1 for BizTalk Server 2006 R2. We would like to offer you the opportunity to download this early preview of the Service Pack and encourage you to test it out and let us have any feedback before we release it to the BizTalk community.

Microsoft BizTalk Server 2006 R2 Service Pack 1 (SP1) is an update for BizTalk Server 2006 R2.  It includes fixes to issues that have been reported through our customer feedback platforms, as well as internally discovered issues. To see a listing of the customer-reported issues that are fixed in this service pack, go to  For a description of some of the other updates included in this service pack, see What's new in BizTalk Server 2006 R2 SP1 ( 

A guide for this service pack is also available on the download page.  This guide contains important information to read before you install SP1.  It also provides installation instructions and a section on troubleshooting installation problems. Finally, it contains a section on known issues in this service pack release.

The service pack can be downloaded from here and any feedback or issues you encounter can be reported here

Thank you in advance!


BizTalk Product Group

Saturday, 10 October 2009 10:43:04 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
BizTalk | 2006 R2

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
# Saturday, 03 October 2009

Well – October is always a special month for me…I’ve got family birthdays and my MVP Award is up for renomination. You basically keep getting assessed for the work done in the past year.

Keeps you on your toes and makes sure that complacency doesn’t creep in :-)

I’m happy to say I’m back for another year!!! Whoo hoo! It’s really you guys – the community that make my efforts possible. As long as you need them, I’ll do my best to help.

Bring on 2009/2010 – there should be some great advancements in our technology worlds, more agile, more cloud based and more accessible.
(‘Integration should just work’ – that’s the theory)

MVP Logo - Horizontal

Saturday, 03 October 2009 09:52:41 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
2009 | General | Other
# Sunday, 27 September 2009

Well folks after my last tutorial, Finally Connected OCS to Trixbox I’m getting more and more questions about the OCS side of things…so I thought I’d expand on our OCS 2007 R2 side of the setup.

So the internal setup looks a little like this:


So here our IP:Z = which makes sense when looking at the OCS machines from Trixbox as follows:


Note the or IP:Z in the hosts list here from Trixbox. In short – as far as OCS is concerned when Chatterphone gets a request (from either internal or external) it *has* to have all the knowledge to work out where to route the call.

So don’t forget that OCS embeds a VOIP phone details into User Accounts within AD – viewing the user class object will give you the right details. I wrote a webservice that will display the user’s phone numbers etc.

I also wrote a quick WebService to pull out phone and sip address details from AD from a search string. So if you supply part of a phone number, it gives you the users, and if you have a sip address, it give you the phone number. (I was going to use it for a lookup from Trixbox cause from OCS Communicator, I couldn’t get the invite another person to the conf call via phone working – it was sending an invalid CallerID out to our PSTN provider)

Download File - OcsHelperService

(source code included – as is, for a guide :)

Example calls:
I’ve installed it onto a site called ‘’ and you can run it as follows:

  1. Lookup a Phone Number from SIP Address
    1. http://<webServer>/OcsHelperService/Lookup.svc/Process?action=getphone&caller=<sip address – minus ‘ sip:’> e.g.
  2. image
  3. Lookup a SIP Address from a Phone Number
    1. http://<webServer>OcsHelperService/Lookup.svc/Process?action=getaddr&caller=<start of a user’s voip number>
  4. image

Let’s start

Learning – What in the World is OCS doing?

Setup meaningful logging to try and work out what Trixbox<->OCS is doing = MediationServer

  1. From the OCS Management Tool – setup a New Debug Session
  2. image
  3. From the OCS 2007 R2 Logging Tool – log S4 and the Mediation Server settings.
  4. image
  5. Then click Start Logging and you should be on your way to recording what OCS is doing in response to Trixbox. This helps you find out *exactly* what OCS is responding with. Calls, “No Service" etc.
  6. Go through and run through a test session of what you’re wanting to try out. e.g. incoming call or outgoing call.
  7. Click Stop Logging and click Analyze Log Files
  8. image
  9. The OCS 2007 R2 SDK tool – snooper should come to the rescue here and display a detailed log of what happened. Colour coded and see what what going on.
  10. Here’s a sample for an outgoing call:
  11. image
  12. What’s more interesting is an incoming call:
  13. In this particular call – I rang my OCS number and hung up after 2 rings. The conversation is pretty detailed in terms of what you see with SIP. i.e. Seeing this is the MediationServer there should be something like SIP INVITE->Trixbox->SIP INVITE->OCS Mediation (Chatterphone)->OCS Server.
    You’ll notice these packets are like IP4 routing packets, with headers possibly changing, but you should be able to make out your dialled number in there.
    1. image

This is your handy weapon for OCS land – if communication isn’t getting through, then check all the IP details.

Incoming calls to OCS

  1. Users are generally identified as +<country code><area code><number>
  2. If when making an External Call in, make sure in the above logs the number coming in is in the right format. i.e. +612………
  3. What does a User Look Like
    1. Firstly they belong to a Location (the Location Name also has implications within ExchangeUM if you use it for Voice Mail), looking at the location code I just have it stock standard as follows:
    2. image
    3. Finally let’s look at what a user like myself looks like from the OCS Admin Tool. (In my case Enterprise Pools->BreezePool1->Users)
    4. image

Hopefully this has helped a little more in working out what is going on in your OCS world(s).

Between the logging here and the ‘Asterisk –r’ option in a console app on Trixbox, you should be getting a better picture. Because many setups can be very different, looking down here at the ‘packet’ level is really the only way to go in resolving these.

(Another handy option is to turn on Event Logging in OCS Communicator, which gives some great info from a client perspective as well :)

Good luck. :-)


Sunday, 27 September 2009 21:15:46 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
# Friday, 25 September 2009

I woke up on Wednesday morning to a thick soup blanket of red.

No buildings, no cliffs, no grass…just Red. (We’d been teleported to Mars I thought)

Pretty amazing stuff, here’s some piccies that capture the moment :)


Friday, 25 September 2009 06:20:26 (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0] -
<2009 November>
 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