Better Integration Analysis…

So…almost three years ago (gulp) I wrote this
article on the use of orchestration naming conventions.  In the post, I described
the value of orchestration diagrams and their use throughout the development cycle. 
In my current engagement, we are doing analysis on the integrations between ERP, warehousing,
front-end commerce systems in multiple channels, and a PIM (Product Information Management)
solution.  I’m finding that the BizTalk designer – used just as a modeling tool
with the constructs that it provides but not filling in deep detail – eliminates so
much
of the ambiguity that a simple Visio can leave on the table.  So I
thought I’d repeat my (now old) thoughts on this topic:

The opportunity exists to use an orchestration diagram in several interesting ways
within a project lifecycle:

  1. As a way to capture an initial high-level design, using all the orchestration shapes
    as intended but not yet bothering with real maps and schemas.  Stubbing out schemas
    (so you can declare messages and variables to be of proper types) and maps will allow
    you to flesh out the orchestration diagram(s) quite a bit, using the compiler as just
    a way to check for consistency.  All of the external system interactions, communication
    patterns, decision points, parallel vs. joined flows, etc. can be represented at this
    point in a shell orchestration.

  2. As a way to gain consensus with the development team & business sponsor about
    whether the right functionality is indeed going to be built.  The high level
    design just described is a great tool for this discussion.  Put your orchestration(s)
    up on a wall with a projector and do a walk-through with as many of the project stakeholders
    as makes sense.  Or use a tool like CutePDF to
    print the orchestration as a PDF to send around via email.

  3. As a way to estimate work.  The various shapes in your initial orchestration
    can often represent reasonable granularity for time estimates.

  4. And finally, as a way to guide project work…Rather than starting with the entire
    orchestration that you created to support steps 1-3, you might find it easier to create
    a new orchestration that represents the path(s) you are tackling at a particular point. 
    You can cut/paste portions of that original orchestration or simply use it as a reference
    for what comes next it serves as your outline.

To help realize some of these benefits, naming conventions within an orchestration
are quite important

While the naming conventions are good practice for variables, Messages, Multi-Part
types, etc. they are even more import for the workflow shapes.  The goal is to
ensure that the intent of each shape is clear, and that the text associated with the
shape conveys as much as possible given the space constraints.  Make liberal
use of group shapes where needed.  In this way, a non-technical audience will
be able to use the orchestration as documentation.

ASP.NET 2.0 Troubleshooting tips!

Oflate, while converting our asp.net 1.1 applications to asp.net 2.o, we have encountered common weird errors…. The following are solutions of some common issues in asp.net 2.0 applications:
Error#1 : “The project file ‘ ‘has been eitherrenamed or is no longer in the solution”
Solution: We received the above error whenever we made changes to source files […]

Scott Guthrie: "ASP.NET AJAX support in SharePoint 2007 coming later this year"

Yesterday I attended one of the sessions Scott Guthrie presented at the VISUG event in Mechelen (Belgium). In this session Scott covered some of his ASP.NET 2.0 and ASP.NET AJAX tips and tricks: cool stuff. When started talking about ASP.NET AJAX the audience (+300 people!) started asking some questions, in my turn I asked Scott about using ASP.NET AJAX in SharePoint 2007. Scott confirmed Daniel’s statements (not supported, only use the the client side scripts, server-side controls don’t work, etc), but more interesting; he told the audience that ASP.NET AJAX will be supported in SharePoint 2007. How is Microsoft going to pull off this trick? <quote>ASP.NET Ajax will be supported in SharePoint when we release a service pack for SharePoint, we will ship it later this year.</quote> Great!!

Another statement that Scott made, (which actually contradicts Daniel’s statement) was about using the UpdatePanel in web parts. According to Scott you can make use of the UpdatePanel in SharePoint, when it’s hosted in a web part. Mmmm, let’s find some more information about this. I’ll definitely need the help of my colleague Kevin (hey Kevin, now it’s really time to start a blog!!) to get me on speed with ASP.NET AJAX.

Side note: kudos to VISUG (Visual Studio User Group Belgium) and MSDN Belux for organizing this (free!) event, a job well done! It was great to meet so many (old) friends, ex-colleagues, students, … during the break, I didn’t even have time to say hi to everybody I know.

Side note 2: the SmartPart also got some exposure! Scott mentioned it when he answered a question from the audience, I guess he didn’t know that Belgium is not only the land of the chocolate, but it’s also the land of the SmartPart! 🙂

 

Technorati tags: sharepoint, asp.net, ajax, web parts

Forms Based Authentication in SharePoint: Web Administration Tool

One of the big new things (among tons of others of course) in SharePoint 2007 (both WSS v3 and MOSS 2007) is the fact that SharePoint now uses the authentication provider model of ASP.NET 2.0. This means that you have store the user accounts and passwords in another data source than Active Directory (the only option in SharePoint 2003), for example a SQL Server database. The good news is that SharePoint is relying on ASP.NET 2.0 for this, so if you know how to enable Forms Based Authentication in ASP.NET 2.0 sites, you also know how to enable it in SharePoint 2007! Enabling it is one thing, adding users to the database that stores the user accounts is another thing. Techies probably know lots of ways to create user accounts: stored procedures, sql statements, Visual Studio’s Administration Site, … But out-of-the-box there is no UI available to actually do that in ASP.NET 2.0/SharePoint 2007.

Luckily there is the fantastic SharePoint community: Chandima has just released his Forms Based User Administration Feature. I haven’t tried it, but it seems the very nicely implemented: it uses features for deployment, web parts for the UI and even a CAPTCHA is present! Very slick! Now the road to create self-registering SharePoint sites is wide open! Get it from CodePlex.

 

Technorati tags: sharepoint, forms based authentication, moss, wss

Super fast purge of the MessageBox in BizTalk 2006 – Extreme cases only

If you’ve wanted a way to get your MessageBox’s back to it’s install state – brand new freshly ‘shrink wrapped’

Here’s the big Burtha of techniques – it goes without saying This will DESTROY
all existing MessageBox DATA in one swoop!
Great for testing purposes though 🙂

Grab msgbox_cleanup_logic.sql found
in ..\Microsoft BizTalk Server 2006\Schema

Run that in SQL Query Analyser. (or
SQL Management Studio)
run Exec bts_CleanupMsgbox

Viola! (and hope you didnt run it on the wrong machine 🙂

You’d still need to look after the other databases such as Tracking etc.

QuickCounters update…

Another release of QuickCounters is available – check it out! Improved WCF support,
and enhancements to the viewer. You really have to play with the library a bit to
realize what a huge benefit it can provide both to operations and performance test
investments (for fairly little investment on your part…)

Our CodePlex home is here. Downloads
and source code here.

QuickCounters update…

Another release of QuickCounters is available – check it out! Improved WCF support,
and enhancements to the viewer. You really have to play with the library a bit to
realize what a huge benefit it can provide both to operations and performance test
investments (for fairly little investment on your part…)

Our CodePlex home is here. Downloads
and source code here.

Simple RegEx replace in C#

As I don’t use regular expressions that often I always forget the syntax. So I thought I just put a basic replace pattern up here.

This method takes a schema, finds all places where is says schemaLocation=”whatever” in a text and changes this to schemaLocation=”whatever.xsd and then returns the schema.

<div><span style="color: #0000FF; ">private</span><span style="color: #000000; "> XmlSchema FixSchemaLocation(XmlSchema schema)
{
  System.Text.RegularExpressions.Regex locationReplacePattern </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> System.Text.RegularExpressions.Regex(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">schemaLocation="(?<location>.*?)"</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);
  </span><span style="color: #0000FF; ">string</span><span style="color: #000000; "> locationReplaceValue </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; ">schemaLocation="${location}.xsd"</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;
  </span><span style="color: #008000; ">//</span><span style="color: #008000; ">Puts .xsd after the schemaLocation. We need this find the imported schemas</span><span style="color: #008000; ">
</span><span style="color: #000000; ">  StringWriter sw </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> StringWriter();
  schema.Write(sw);
  XmlSchema formatedSchema </span><span style="color: #000000; ">=</span><span style="color: #000000; "> XmlSchema.Read(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> StringReader(locationReplacePattern.Replace(sw.ToString(), locationReplaceValue)),</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">);
  </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> formatedSchema;
}</span></div>