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: - 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 :)
- 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.
Guys – something that always gets me. *** Update – I’m actually saying this is not good for a server *** Q. Why when you install Win2K8/R2 out of the box settings have the POWER MODE=balanced??? I’m always amazed by this – there’s 101 other questions + answers you’re asked and you give. But nowhere does the system say (oh a server system mind you) “BTW – you know the 8 Cores you have, you’re gonna use 2 of them at any one time…” It’s a Server O/S not a desktop (Desktop I can totally understand – saving power, greener world etc etc) – server I don’t get. (The flip side to that coin is - “if the server actually ran at a faster capacity – I’d be finished in 30 mins instead of 4hrs” –> therefore you save 3.30mins of green lush rainforest – or some nuclear radiation from entering the world) I find this power setting is always one of those elusive settings on Server, upon first start up you get prompted for Roles, Features, Networking even IE Security Settings….but nothing about limping along. You have been warned – you may think “What’s Mick on about”…did I tell you about the TWO production environments I recently visited and they thought I was a miracle worker… I wonder is SCOM 2007 R2 reports that setting back to the main console??
A while back I created a script that restarts your BizTalk Hosts - pretty simple, here http://blogs.breezetraining.com.au/mickb/2006/10/04/SimpleScriptToRestartAllBizTalkServices.aspx
(also this script didn't pick up your service if it was previously stopped - limitation of the 'sc query' command)
Now with PowerShell it's a one line job:
It goes something like this:
get-service BTS* | foreach-object -process {restart-service $_.Name}
You can also set all your BTS Services to start 'automatic' as follows:
get-service BTS* | foreach-object -process {set-service $_.Name -startuptype automatic}(I'm actually trying to set the BTS Services to 'Automatic (Delayed)' but haven't been able to do that yet)
Enjoy,
Mick.
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…. :) http://blogs.msdn.com/microsoft_office_word/archive/2009/10/26/introducing-word-automation-services.aspx
A few tidbits to share with you so far.
.gif) 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!) - SharePoint 2010 Beta Center - http://msdn.microsoft.com/en-us/sharepoint/ee514561.aspx *** Great place to Start ***
- SharePoint 2010 SDK - http://msdn.microsoft.com/en-au/library/ee557253(office.14).aspx
- Visual Studio 2010 Beta 2 - http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx (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.
- 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 - http://msdn.microsoft.com/en-us/sharepoint/aa905690.aspx
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: - Powershell everything
- Check out LINQ/ADO.NET Entities integration and querying data
- Performing JOINS in CAML
- Client.svc – client side proxying, batching of requests and sending them through to SharePoint 2010. Very fast, as we only send what we need.
- Workflow exporting/importing from Visio->SPD->VS.NET->Deploy.
- 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.
- AJAX through out – even WebPart editor toolparts you can introduce AJAX there for alot of the lookups etc.
- 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)
- 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.
Enjoy, Mick.
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.
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: - 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. - Configure IIS – BTS SharePoint WS Web Application
- 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.
- As you can see I selected BTSharePointV3AdapterWS (for WSS V2 SP3, select BTSharePointAdapterWS).
- This is the folder you will point IIS to later.
- Open this folder and you’ll see a web application with a web.config.tmpl
- Copy the web.config.tmpl and rename the *copy* to web.config
- Open up your Web.Config in Notepad and configure as follows:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <httpModules> <!--add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /--> </httpModules> <!-- 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" /> <authorization> <allow roles="SharePoint Enabled Hosts" verbs="GET,HEAD,POST"/> <deny users="*"/> </authorization> <!-- 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="" /> </system.web> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.SharePoint" publicKeyToken="71e9bce111e9429c"/> <bindingRedirect oldVersion="11.0.0.0" newVersion="12.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration> - (you can always go back and tighten security up on this when you’ve got it working).
- Note the ‘SharePoint Enabled Hosts’ – local group here.
- I’ve also removed the ‘Documentation’ tags so I could get some WSDL to make sure it works within the browser.
- Save your web.config within Notepad.
- NOTE: make note of the Folder Path to get here as we’ll need it in IIS next.
- Configuring IIS
- Bring up IIS Admin MMC snapin.
- 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. - 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…> - Click OK.
- To Test your WS: browse to: http://<your server>/BTSharePointAdapterWS/BTSharePointAdapterWS.asmx
- You *should* get this:
You can invoke the IsAlive function and get TRUE back. - 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:
- Local file security – make sure the Web App Pool acct can access those directories.
- Windows Auth is turned on, on your Web App.
- Check IIS log files for clues.
- You’re done on the IIS side of things, let’s configure BTS Side.
- 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.
- Install the “I’ve been Configured Registry Keys” – I took these from a previously successful 2009 install.
- Once the registry keys have been applied you’ll need to go and configure the …\TPM key to reflect your setup as follows:
- In Particular – configure your SharePoint SiteID to the one you saw in IIS.
- How is this Different for a x64 bit Install
- The IIS piece is the same.
- The BTS Piece – the Perf counters are the same,
but the ..\TPM piece is under HKLM\SOFTWARE\WOW6432Node\Microsoft\BizTalk Server\3.0\ConfigFramework - 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.
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 - http://www.travelpod.com/traveler-iq?ba96=7587) 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: http://code.msdn.microsoft.com/wim2vhd 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 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>]
[/mergefolder:<folderToMerge>]
Required parameters:
/wim:<wimPath>
The path of the WIM file to use when creating the VHD. For example:
X:\sources\install.wim
Where X: is the drive letter of your DVD ROM drive.
/sku:<skuName>|<skuIndex>
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:
/vhd:<vhdPath>
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:
<Major>.<Minor>.<Build>.<Rev>.<Arch>.<Branch>.<Timestamp>.<SKU>.<Lang>.vhd
ex:
6.1.7100.0.x86fre.winmain_win7rc.090421-1700.Ultimate.en-us.vhd
NOTE: If the language cannot be determined from the WIM, no <Lang> block
will be included in the VHD name.
/size:<vhdSizeInMb>
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.
/disktype:<Dynamic|Fixed>
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.
/unattend:<unattendXmlPath>
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.
/qfe:<qfe1,...,qfeN>
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>
/ref:<ref1,...,refN>
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.
/dbg:<protocol>,<port/channel/target>[,<baudrate>]
Configures debugging in the OS on the VHD.
examples:
/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
/copylocal:<localFolder>
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.
/passthru:<physicalDrive>
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.
/signdisk:<true|false>
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".
/mergefolder:<folderToMerge>
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.
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 - http://www.codeplex.com/Wikipage?ProjectName=FacetedSearch ---- 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
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….
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. Enjoy. ------ 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. http://www.microsoft.com/downloads/details.aspx?FamilyID=24660797-0C8F-4687-9D5F-B76D99B37EC2&displaylang=en
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 http://go.microsoft.com/fwlink/?LinkId=164985. For a description of some of the other updates included in this service pack, see What's new in BizTalk Server 2006 R2 SP1 (http://go.microsoft.com/fwlink/?LinkId=163958). 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! Regards BizTalk Product Group
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… :) ) http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=dd4e843d-2121-4016-8391-d763d0ff0a08 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.
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 :) http://technet.microsoft.com/en-us/library/dd793607.aspx Check it out and let me know what you think – I haven’t run it yet…looking into it. Have fun, Mick.
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 - http://kentweare.blogspot.com/2009/10/biztalk-2009-sharepointwss-30.html Well done Kent – looks great!
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. Mick.
|