Tuesday, June 21, 2011

Windows Phone 7– Outlook sync

I own a Windows Phone 7, and one of the problems I’ve had since day one is the inability to sync my local Outlook with the phone. My initial approach was to add the phone’s live account to Outlook, and then do copy&paste of contacts and appointments to this account. No need to say this is extremely inefficient...

My friend Tiago Pascoal found the solution for me: a miracle little $20 tool called gSyncit. This tool sits on your tray icon and syncs from your Outlook into your gmail account. You can then setup the Google account on your phone, and voila! The tool sync contacts, appointments, tasks and notes.

I’ve been using it with Outlook 2010 x64 and my feedback is very positive, I highly recommend it.

It’s just a pitty that I ended up having to buy an app to do something Zune Software should handle for me out-of-the-box, and on top of this using gmail as a bridge.

Note: I have no affiliation whatsoever with Fieldston Software.

Editing .ODX Files / Regenerate Orchestration Code

Everybody with some experience with BizTalk Server knows that sometimes the ODX files get garbled and have to be fixed manually. I’ve had situations where the compilation of an orchestration works fine, but when viewing the orchestration in the visual studio designer, there are shapes with the red icon of error in it. When things like this happen, or you get those strange “Errors exist for one or more children”, what you can do is have BizTalk re-generate the code part of the ODX.

To do this, edit the ODX file in notepad, and look for the string:

#endif // __DESIGNER_DATA

Then, carefully remove all the text after this line and until the end of the file. Save the file and re-open it in the Visual Studio Designer, and make some change to is (such as adding a newline in an Expression Shape). This will cause the full re-generation of the code part of the ODX that follows the string above, and it will probably fix your strange problems.

An old hint, but a useful one!

Thursday, June 2, 2011

When are Instance Subscriptions created, after all?

I stumbled with a situation where a Main orchestration calls a sub-orchestration, and this sub-orchestration sends back to Main a new message, using Direct Binding. The non-obvious behavior here is that the first Orchestration calls the second synchronously, so in theory the send in the second should fail, because the subscription is not there yet.

Since I knew that publishing with Direct Binding fails the sender orchestration if there is no subscription, I did a small test to check what was happening.

This is the main orchestration:

orch_main

The first Send initializes a correlation set, and the second receive follows it. The Main Orchestration passes the initially received message as a parameter to the sub-orchestration, which simply maps it into a new one and returns the result:

orch_sub

I deployed this and did a Search for subscriptions in the Administration Console. The result is curious: the subscription for the Reply message (the result of the map) is not there yet when at “Wait 1”, but it’s created after the correlation set is created, so its there when “Wait 2” is reached. This is why the publish in the sub-orchestration doesn’t actually fail.

This behavior might be different in some cases, as reported here by Yossi: When is a subscription created for a correlation set passed as a parameter?.