"Quick Win" Feature Additions for BizTalk Server 2011

Yeah, I just gave a name to the next version. Who knows what it’ll actually be? Anyway, a BizTalk discussion list I’m on starting down a path talking about “little changes” that would please BizTalk developers. It’s easy to focus on big ticket items we wish to see in our every-day platforms (for BizTalk, things like web-based tooling, low latency, BPM, etc), but often the small changes actually make our day to day lives easier. For instance, most of us know that adding the simple “browse” button to the FILE adapter caused many a roof to be raised.

So that said, I thought I’d throw out a few changes that I THINK would be relatively straightforward to implement, and would make a pleasant difference for developers. I put together a general wish list a while back (as did many other folks), and don’t think I’m stealing more than 1 thing from that list.

Without further ado, here are a few things that I’d like to see (from my own mind, or gleaned from Twitter or discussions with others):

Adapter consistency (from Charles). It’s cool that the new WCF SQL Adapter lets you mash together commands inside a polling statement, but the WCF Oracle adapter has a specific “Post Poll” operation. Pick one model and stick with it.

Throw a few more pipeline components in the box. There are plenty of community pipelines, but come on, let’s stash a few more into the official install (zip, context manipulation, PGP, etc).

Functoid copying and capabilities. Let me drag and drop functoids between mapping tabs, or at least give me a copy and paste. I always HATED having to manually duplicate functoids in a big map. And how about you throw a couple more functoids out there? Maybe an if…else or a service lookup?

More lookups, less typing. Richard wants more browsing, less typing. When I set a send port subscription that contains the more common criteria (BTS.MessageType, BTS.ReceivePortName), I shouldn’t have to put those values in by hand. Open a window and let me search and select from existing objects. Same with pipeline per-instance configuration. Do a quick assessment of every spot that requires a free text entry and ask yourself why you can’t let me select from a list.

Refresh auto-generated schemas. I hate when small changes make go through the effort to regenerate schemas/bindings. Let’s go … right click, Update Reference.

Refresh auto-generated receive ports/locations/services. When I walk through the WCF Service Publishing Wizard, make a tiny schema change and have to do it again, that sucks. There are a enough spots where I have to manually enter data that allows a doofus like me to get it wrong. Rebuild the port/location/service on demand.

Figure out another way to move schema nodes around. Seriously, if I have too much caffeine, it’s impossible to move schema nodes around a tree. I need the trained hands of a freakin’ brain surgeon to put an existing node under a new parent.

Add web sites/services as resources to an application via the Console. I think you still have to do this by the command line too. The only one that requires that. Let’s fix that.

Build the MSI using source files. I pointed this out a while back, but the stuff that goes into a BizTalk application MSI is the stuff loaded into the database. If you happened to change the source resource and not update the app, you’re SOL. It’d be nice if the build process grabbed the most recent files available, or at least gave me the option to do so.

Export only what I want in a binding. If I right click an app and export the binding, I get everything in the app. For big ones, it’s a pain to remove the unwanted bits by hand. Maybe a quick pop-up that let’s me do “all” or “selected”?

Copy and paste messaging objects. Let me copy a receive port and location and reuse it for another process. Same with send ports. I built a tool to do send ports, but no reason that can’t get built in, right?

That’s what I got. What are your “quick fixes” that might not take much to accomplish, but would make you smile when you saw it?

12 replies

1) Resizable code window in the orchestration designer
2) A prompt before wiping any pending changes when hitting escape in the orchestration code window.
3) Allow a host to be selected for dynamic send ports rather than just using the default one for the selected adapter.
4) Better deployment support. I want a consistent way of scripting deployments without having to resort to 3 or 4 different command line tools and API’s.

I have been pretty disappointed with BizTalk 2009 – it seems a lot buggier in VS and particularly in the admin console. A couple of things I would love to see improve:
– a rewrite of the admin console, either web or wpf based
– admin console to be a lot smarter about refreshing and caching – its waay to slow
– improved property dialogs in vs and admin console
– the expression shape editor KILLS me – give syntax highlighting and make it resizable please
– I seconds marks point about deployment, now with esb there are more artifacts that need separate deployment from biztalk, this needs to be more integrated
At the moment it feels like there is too much friction in getting things done quickly in biztalk!

I agree most of your suggestions would be good “quick wins”, but I have to say I disagree with “More lookups, less typing.” I want the reverse: less browsing, more typing.

The most obvious example is when selecting a message/variable type, even though I know exactly the type and could get it written in a few keystrokes, the orchestration editor doesn’t allow that. Instead I have to waste time finding the type in the type picker dialog box. I agree that selecting from a list could be useful (when you don’t remember the *exact* name you want to pick, or want to be sure you don’t have any typos in the name), but if implemented, keyboard entry should still be an option. Even better would be keyboard entry with autocomplete (“Intellisense”): the best of both options. (As a “quick win”, browsers would probably be easier to implement than autocomplete, but I think it’s critical that keyboard entry is still allowed, as well as copy/paste)

Good points all. Christos, you’re right, that typing and picking should both be options. In this crazy world of ours, you can’t tell me that these tools can’t do look-aheads or pick lists in addition to manual entry. We want it all!

Some more Orchestration-specific ‘quick-wins’. As well as resizable expression windows, bug-free, working, usable intellisense and colour coding, please, please can we have…

• A way to exploit the ‘using’ directive. It’s supported in XLANGs. Why, oh why can’t we use it through he orchestration designer? I am just so sick of having to type fully qualified type names again and again and again.

• Separate ODX (Orchestration Designer XML) from XLANGs. Mixing the two together in a single file and writing a designer that tries to keep it all in sync has just never worked properly, and things have got significantly worse in BTS 2009. This instability is beginning to impact project plans. MS has got to give us short-term fix. For BTS 2011, they should make a clean separation between ODX and XLANGs. Then they should completely re-write the designer, exploiting the basic principle of separation of concerns. They might then have a fighting chance of equipping BizTalk with a stable designer.

• Please, please let me ‘comment out’ sections of an orchestration. I want to be able temporarily switch bit off without having to cut them.

• Visible annotations in the designer please. Orchestrations are not just code. They are graphical models. Give use the ability to show our thought processes visibly. No-one uses the description property.

• Support for generics.

• Support for arrays and indexers.

• Flip the default setting that instantiates objects with a default constructor to ‘false’. Making this ‘true’ by default is the worst design decision imaginable. Automatic instantiation of custom, untested classes in code that is hidden from the developer is just plain daft. It’s also inconsistent because it only happens if your class has a default constructor.

• There are several other features of XLANGs that I would love to commit to the trash can, but I guess we will have to live with its idiosyncrasies for the purpose of backward compatibility.

Seems to me that I have written this wish-list before. It is high time that MS gave some attention to mainstream BizTalk developers, rather than just cram the product with additional niche features.

A few quick-win improvements:
– Ability to move mapper artefacts (functoids ad links) from one map page to another by right-clicking on the artefact and selecting “Move to Another Pag”.
– Ability to configure maps (and the underlying XSLT) so that the generated XML message does not use the ‘ns0’ namespace prefix but uses the default namespace instead.
– In the Schema Editor, as well as showing elements in the schema tree on the left, also show comnplex type definitions. I have many schemas that contain simple and complex type definitions only, that are then imported/included into other schemas, yet I cannot easily modify the complex and simple types in the Schema Editor!!

How about a default Flat File Send/Receive Pipeline that allows me to configure the schema at runtime instead of design time? It seems like a colossal waste of effort to create one or two pipelines for every flat file schema you have.

The Mapper needs to be revisited. It may be fine for simple schemas, but when you start working with SAP IDOCs or EDI things get ugly fast.

Better out-of-the-box server deployment. We have our deployments almost push-button automated using SCOM, Team Foundation Server, MSBuild, and the BizTalk Deployment Framework. It would be nice to get that for free!

Here are my needs for the Next BizTalk.
1. Ability to modify filter conditions on the Orchestration through configuration and not deploy’s , just like Ports
2. Make Better graphical display of subscriptions and message routing (take a look at webmethods and mimic operational capability from webmethods 1.0 atleast
3. Promote BAM by providing out of the box templates.