Blog Home  Home |  Breeze Home RSS 2.0 Atom 1.0 CDF  
Mick's Breeze Blogs - Biztalk/Sharepoint/... - Wednesday, August 27, 2008
Things hard and not so hard....
# Wednesday, August 27, 2008

Hi folks - over the last week or so I've had many requests about what's happening around privacy and what does it mean to get a "Tag" this year.

Breeze Event SystemBreeze Event System  


Reasons for Building the System
1. Breeze designed, built and owns the 'Breeze Event' System. I am talking first hand (and am happy to share details with you). A variant of the idea originated years back when myself and David McGhee worked on a very cut down alpha variation - together we cut the code and got about 5 mins of RFID activity from the devices we were using before our battery died.

Stepping forward to the current system, once we presented MS with the concepts of what we wanted to do - many folks gave some sensational support (such as Marcy Larsen & Rahul Garg) in integrating this new piece with 'TechEd proper'. We got there in the end and for me - it's a real eye opener to see how big TechEd is and how much planning goes into it.

2. As a speaker/delegate/MVP at many TechEds and other conferences my motivation was all about giving you the Delegate (& myself as a Speaker) a better TechEd experience. Taking the pain out of a lot of things. For example:

  • TechEd to me is about experience technology, not just hearing about it. Here's your chance to play and experience some cool technology.
  • Being able to see when rooms over capacity before you get there only to be told to go away
  • Be given online evals just for the sessions you attended (currently we set 'attended' to be at least 15 mins within the session)
  • I might be a new developer, what sessions do I go to? You could have information such as 80% of other 'new developers' went to SessionX. Great I might go to that one.

    A big one for me is that at the end of the conference Delegate's get a boxed DVD Set of sessions in other TechEds with thousands of hours of material on it. Wouldn't it be great to be given such things as '80% of other new developers have these sessions/webcasts etc as their top 10 list' - that way I've got targeted viewing.
  • As a speaker - they will know the cross section of interests and technology tracks in the room. (there's a chart display we've created). So the classic question of 'How many developers are in the room? How many ITPros?' no longer needs to be asked AND as a Delegate the speaker will be able to have more information to tailor their material to the interests of the audience (hopefully reducing the amount - 'that just went over my head')
  • Planning - future conferences/sessions and material will now have direct influence by the Delegates. What sessions you valued, and got the most out of.
  • More...

As you can see, we've designed the system with us (delegates & speakers) in mind.

I digress.....Ok onto the main items......

Privacy Concerns - yours and mine

I wanted to fill you in as much as possible about the system (this is eating into my sleeping time :) so there is a clear understanding about the what is going on.

Some Details on How the System Works

1. Your tag - holds a number e.g. 1234 (we printed it on the plastic surface of your tag) end of story. Nothing else.  These tags are 'EPC Gen II' UHF Tags and operate between 920-926MHz.

Here is the actual Tag itself (it will be stuck onto a card to make it look beautiful :)
                

Some facts:

  1. The tag is known as a Dog Bone by the way the metal aerial is shaped. Just above the barcode, there's the number and above that there is an indent the size of a 'pin head' in the middle - this is the chip.
  2. The tag is a passive tag (as opposed to active - such as your E-Tags in cars) which means radio waves need to be sent to it, to excite the tag and so the tag can transmit its number. This distance in our case is around 2-3m. If there's no waves, then nothing is transmitted.

    What this generally means is that you should be able to walk straight through into sessions, rather than people scanning your individual barcodes as was in previous years.
  3. The Barcode is there so we can integrate with your established Registration process. We printed the barcode there as a fall back mechanism.

    The barcode number is the only piece of information written onto your tag. (Printing the barcode + printing to the Tag at the same time doing around 5000 tags took a bit of development and H/W)

    In other Systems, things like temperature readings are frequently written to the tag, so that when the fish is delivered to the restaurant, they know the freshness and quality of it.

    Generally speaking in RFID based solutions there will be no sensitive information written to the tag (if it gets lost, crushed, drowned etc etc)

    Tidbit - the amount of data you can write to these tags is in bytes (like 96 bits), but other tags can store around 64KB!!!! (that was the total sum size of my Apple II as a kid!!)

 

2. Readers - come in many shapes and sizes for different purposes. Our Readers have a read range of 2m. There will be white pizza shaped 'boxes' mounted and these are the antennae. The reader is connected to local pcs that drive the system.

There will be 56 Readers and 118 antennae mounted around Session/Breakout rooms doorways and as I mentioned they have a range of 2m. This is designed to reduce the queues (with reading a barcode) getting into rooms as you should be able to just stroll through.
(there have been some ski resorts in Europe implementing RFID ski passes - ski straight on/off)

                                                                 RFID Antennae
                                                                   Shot of the Antennae

3. Local PC - each room with have one a PC where all the Readers are connected to. We designed our system so that if we have a network meltdown, each room will (hopefully :-) still be running. In fact each Local PC runs our solution on top of BizTalk RFID Server to drive the walk-in and chart displays.

4. Network - there will be a dedicated network for the RFID component @ Teched where these Local PCs and us will be connected to in isolation to the rest of the network.

5. The Information captured - the information that your tag number associates with in the back end is essentially the Conference profile information you entered as part of the Registration process.

This enables things like 60% of people like Jazz in this session.....ideally we're really interested in aggregates of information to help improve your experience.

(I'm hoping to get MS and MVP information as well - so you as a Delegate may be notified when a Windows2008 MVP is in the house)

Just quickly - we're using SQL Replication to frequently replicate the information from each Room back to our servers centrally.

Sneak peak....

Cause you read to the bottom of this post....here's a reward.....
Now according to my team - this information is available on All Rooms, or by Individual Room.
(my current challenge is how to expose these screens to you guys (approx 500-700 concurrent connections) without causing grief to our system.....nothing like a challenge a week out from TechEd......)

Looking fwd to a very different TechEd....see you there....nighty night.

Wednesday, August 27, 2008 1:11:33 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [1]   BizTalk | RFID | TechEd | Silverlight  | 
# Tuesday, August 19, 2008

Hi folks,

Have I got a deal for you.... no seriously we’ve got a great night planned leading up into TechEd. I’m really looking forward to it.
(ok let me get my dates right)

On August 27th Wednesday night (Wednesday week from now) we’re lucky enough to get....

Angelo Laris from Decillion(seasoned member of our user group) lined up to talk to us about A4SWIFT (which is basically what Angelo and Decillion roll out). Decillion are formally recognised by Microsoft as being experts in this area and are also a member of the Microsoft BizTalk Virtual Technology Specialist Program.
(I’ve also got a couple of house keeping tasks to mention…..first the great stuff…)

Angelo sent me through his outline:

1. Introduction to SWIFT                                                                                                                    5min

2. What is a SWIFT Message.                                                                                                           5min

3. The Schema Definitions.                                                                                                               10-20 min

4. The HTML Form Generator (Young Youn will present or help me out here)           20min

5. The Business Rules Engine – HOW to validate a SWIFT Message.                                30-60min

6. The Message Repair using Infopath and BAS.30-60min                                                   30-60min

Looks fantastic – what you are going to see is how BizTalk can be extended, Angelo is talking about a mature product base and it’s great to see just how others are using and extending BizTalk while adhering to industry standards.

One of the main questions I get is “What can I use the BizTalk Rules Engine for?”…..ask no further.

What is in store for our Aug 27th Session

Where:
Microsoft, North Ryde
1 Epping Road

When:
6pm - Beer + Pizza
6.30pm - Kick off

Aug 27th -

Feel free to forward this to any of your colleagues/friends I may have missed (tell them to register on the Sydbiz.org site to be included)

Other Business:
* TechEd 2008 – We’ve finally got RFID end-to-end at the conference
(See my blog post here – had the media interested and lots of interviews, Breeze got the green light 40 days out from TechEd......no pressure)
Some quick stats:

1. Over 70 RFID Readers (fixed + windows mobile based) with 118 Antennas.

2. Lots of Intelligent information surfacing.

3. BizTalk Server, BizTalk RFID, BizTalk RFID V1.1, MOSS + good old Silverlight 2 b2 is pretty much running the show.

4. We’re ‘printing’ (or encoding is the tech term) over 5500 tags – the hardest part was to actually print a corresponding barcode so other systems can handle the badge.

5. I’m due for a holiday at the end of this.....(this is why I couldn’t squeeze a meeting in last month)

So A BIG THANK YOU for those that helped out with the testing of the system (fingers crossed on show day) at previous user group meetings.

* Call for Speakers/Other People to take Tyre Kicking Sessions
If you’ve got any aspect of BizTalk (& related) that you want to share with us....let me know, love to hear what you’ve got to say.
* Don’t forget – we’ve launched an email forum group ‘oztalk@groups.yahoo.com’
Great to see a lot of you already joined – it’s a *private* group open to BizTalk User Group members (we currently have Brisbane, Auckland and Sydney on)
Invite only – send me an email if you want to join and I’ll send you out an invite. (Thanks to all the guys on it so far)

Love to see you there – and reply to this email to let me know for catering.
Cheers,

Mick Badran (MVP - BizTalk) | Microsoft Readiness Instructor
Collaboration and Integration Specialist

Breeze Training Pty Ltd | m: +61 404842 833

http://blogs.breezetraining.com.au/mickb

clip_image001

Tuesday, August 19, 2008 12:42:17 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   BizTalk | Usergroup | Events | TechEd  | 
# Thursday, August 14, 2008

John Powell has a great article (with piccys) that will hopefully get you out of a pickle.

http://blogs.msdn.com/johnwpowell/archive/2008/08/14/error-configuring-biztalk-sharepoint-adapter-on-sharepoint-sp1.aspx

Thanks John!

Thursday, August 14, 2008 9:56:03 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   BizTalk | MOSS | Tips  | 
# Friday, August 08, 2008

TechEd Register - here

Folks I hope you're heading to TechEd this year - it's a brand new breed! Why....????

Because myself and my team are covering the entire event with RFID tags, we'll give you tags - enabling you the delegate to 'live' the technology!!! (seen Tron lately) we'll set up some great RFID interactive capabilities.

rfidtag
Sample card TechEd tag


It all started when... I went to MS and said..."I've got an idea...." and the teched committee(s) saw the plan and loved it (there were some sleepless nights there as well :).

I've been to over 10+ yrs of TechEd (sometimes 3 a yr, US, Oz + NZ) and I figured it should be a chance to play with the technology! Hands on - get dirty. Build, break, play + learn...all that stuff.

As a MS Ptr Readiness trainer/Regular teched speaker - I appreciate the value of sessions but as a delegate I would be looking for the show me/talk to me/let *me* see how it's done.... a bit like plasticine to mould and meld the way that I (as a delegate) would need it!!!!!

So in light of this - Breeze is providing a (huge) BizTalk RFID based RFID Event System that you guys can interact with/we'll walk you through the making of, setup & how the system is put together. We're getting some posters made up and myself as a trainer, would want to share the knowledge around this system.

Let's see what the system does.....(as of 5pm today...nothing like moving targets... :)

The vision we have is:

  1. You walk into a room and the welcome screen will say "Hi Paul" (and you'll fade out, do something special...we've got a couple of ideas here). This component actually is a 'real-time visual display' of out in the field events. In our case it's people walking past readers...or it could be boxes, trucks, palettes etc. Built in Silverlight 2 harnessing the WCF Eventing Services in real time. (We've been able to crank our code up to 150 people walking past *exactly* the same spot)

    Fellow Breezer.... Scotty (a member of the BizTalk Virtual TS team) has a blurb on some of the details on the initial RFID/Silverlight nuts 'n bolts

    (we've also got a webcast on how this is created)
  2. So you guys as an interactive experience as you walk in the room with various graphs (developers in the room, it pros...) and charts - some DRAFT IDEAs
    All done in Silverlight
    clip_image002clip_image002[4]clip_image002[6]

    We've actually got MS Shane Morris on the case here - he never gives up a chance to get down and dirty with Silverlight.
    Check out his thoughts at the moment - big thanks Shane :)

    So there may be an 'Avatar' thingy that gets displayed up on the screen (as Shane mentions).....a quiet secret .....you want to 'pimp your avatar'???? Come and see the Breeze room and we'll make it happen...only those who rock up - I've got a Windows Mobile App that will do it for you.....

  3. Some other areas that may/may not make the final show are having things like:
    1. 'Information Points' - areas that you could simply be standing near, talking to someone and a screen may show where your collegues are, or what you may have in common with the person you're talking to. e.g. belong to community User Groups; where the next sessions of interest are for you.
      These may be distributed throughout the conference.
    2. As you go to a session - if you stay longer than 15 mins (for e.g.) the system contacts Commnet and makes a session eval available for you to fill out (could be done while you're sitting in the session :-)
    3. Breeze will have a room that will be driving all this - be sure to come and see us. Our guys will be more than happy to take you through 'the bunker'
    4. No more hold ups at the doors (hopefully :) with people individually reading your barcodes, you can just walk straight in (imagine if skiing chairlift lines were like that :)
  4. The other major component to the system is an Exhibitor System which is run on a PDA equipped with a Kenetics RFID Reader built on BizTalk RFID 1.1 Mobile (still in beta - nervous who me?). The Kenetics crew have been very helpful and when I embarked on this application I was given the H/W and a C++ DLL....."What..you don't know C++?" - not since uni folks....developed the RFID component in 4 days!!!
    1. The application is for when exhibitors on the floor, they scan your RFID Tag and you can continue the conversation. The scan range is around 2-10cms.
    2. There is also local SqlCe storage, with store/fwd capabilities. I'm using SqlCe merge replication to keep the data safe centrally - which proved to be interesting.
    3. Currently - the MS Stand and the HP stand will have the devices, the RFID Reader + this mobile App (the other exhibitors are still reading barcodes)
  5. TechEd Event information is to be made available through Analysis Cubes so you guys can pull up a pivot table (looks impressive to your boss) and play with the event data. Things like attendance in sessions, audience breakdown by interest or by technology etc. - it would be great to do something like an 'Amazon' - such as if you're a .NET developer having.... "Other people who are also .NET developers went to these other sessions...."

    So as a delegate I can get a 'group feel' for what sessions I should be seeing next - sometimes there's a time where non of the sessions are on my immediate agenda, it would be great to have this information available to help me make my decision on what session I should see in that time slot.
    (e.g. 85% of SQL developers chose this session....)
  6. There's a whole bunch of H/W coming from Kenetics which we'll be giving a session at TechEd on how we built it all!!!
  7. Lastly I thought I'd just mention a quick blurb on the RFID info.
    - there *may* be some apprehension about a delegate getting a 'tag' and the whole "big brother is watching" thing. Let me dispel a couple of rumours
    1. tags are similar to barcodes - they simply contain a number. read differently but from that respect the same (imagine if you could go into your favourite sporting store, and say "I'll have a new shoes" and they knew your size, your brand, and whether it's in stock instantly - now you could even have a self-serve kiosk around that as well!!!)
    2. Your tag can't be read from satellites - lots of physics comes into play here...namely a big one of power. If you think about when TV stations need to broadcast to space, they have a large dish somewhere, 50 guys peddling bikes to generate the power and then they transmit bursts.

      So...no. - simply cover the tag with your hand and you can't be read. (water and radio waves don't go that well)
    3. My vision is to make this *your* teched - as you can see we're being transparent and open about the system and how it works. Any time drop in and we'll show you through.

 

ON ANOTHER NOTE ENTIRELY DIFFERENT - my workflow session I'm delivering - you've got rare oppty....

SOA305
Getting Workflows Running and Talking in Your Applications
04/09/2008 2:00PM-3:15PM

Once you understand the basics of Windows Workflow Foundation (WF) and can put together a workflow using the built-in activities, you will need to know how to get that workflow running in a variety of hosting environments and communicate between the workflow and the host application or the outside world. This session gives you a solid foundation to get started with these techniques. Gain a better understanding of how workflows exist in a hosting process and how to control the hosting services. Learn about the various forms of communication that can exist between a running workflow and the hosting application as well as with outside Web and WCF Services. Also, learn about the persistence and tracking features of WF.

- I've got a technical session on Workflow Foundation.
- Of course you're planning on seeing my session :) - WHAT DO YOU WANT ME TO COVER? WHAT DO *YOU* WANT TO KNOW ABOUT?

(You've got the opportunity to provide feedback and while I'm still 'building' the session - hopefully I can incorporate your needs!)

More later and I'd love to hear your thoughts on above with a comment or two.....be great to see you at TechEd!!!!

Over and out

 

Mick.

Friday, August 08, 2008 7:36:10 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2]   BizTalk | RFID | Events | TechEd | Silverlight  | 
There I was with the a new toy - Zebra R110Xi Printer and a 600 page instruction manual, including a 300 page Zebra programming language reference and an RFID section........so do you spend time with the manual? or unwrap and plug it in and see what happens.

I did the latter - I wasn't printing on labels (yet) where some care needs to be taken, loading unloading etc.

Let's get this puppy into RFID manager I thought...... you'd think "grab the provider and away you go".....you'd think...... :-)

1. Grab the Zebra provider from here - http://www.zebra.com/id/zebra/na/en/index/rfid/rfid_microsoft_biztalk.html?WT.mc_id=1778 (at the bottom of the page)
2. Expand out the Zip and in there is some documentation about installing SNMP networking services on the RFID Server - do this pretty straight forward step (it seems the Zebra provider uses SNMP to gather more info about the printer)
3. Install the Zebra Provider in the usual manner.....outlined in the install document.
4. Next Add a Device through the RFID manager. You will need the IP Address of your printer and the Port number - default 9100
5. I got a FAILED to COMMUNICATE to Device ....tried again and again...here we go I thought.......maybe those 600+pages are looking promising?
6. I then did a quick hunt and found that the printer had a Web Interface (instead of trying to set 6 million properties through the front panel and a <- and -> key) - cool. The web was the go!
7. http://10.1.0.55 (temp IP address of my device) brought I a great Zebra Home page and I knew I was at the right place.
8. I checked out a few settings but as soon as I wanted to look into 'Printer Settings' etc. I was prompted for a password.
9. I was forced to head into the manual and the default password is 1234.
10. So I entered this password in AND...the skies parted, the rays of light shone through......Mr. Zebra replied with

"Access Granted. This IP Address now has admin access to the restricted printer pages. Please Click here to proceed."

11. Hey I thought........does this mean.....and BOOM - RFID MANAGER WORKED A TREAT - added the device and got access to the 'admin' pages on the printer.

12. Uploaded some *.ZPL templates and ready to tackle the next stage.....actual printing.......

Friday, August 08, 2008 1:20:25 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   BizTalk | RFID  | 
# Thursday, August 07, 2008

Wow! I had to venture into the 'cave' and solved this problem - talk about a character building experience!

I'm currently building a Mobile BizTalk RFID 1.1 solution for TechEd08 that runs on a PPC with a Kenetics CFUHF Reader.

*** Early Screen Shot *** :) image

So in building out this application the details always bring unforeseen challenges to light:

1) The application houses all the BizTalk RFID pieces (providers, device proxies etc) so registration, and starting/stopping providers/device discovery and applying properties to the device needs to be all taken care of.

2) I built an RFID Mobile Provider for the Kenetics device - I worked with their support engineers solidly for a week to build what I needed. I took a trip down memory lane and have had enough pinvoking to last till Christmas.

3) The app also manages a several local SQLCe databases - one for my app, the others for the operation of BizTalk RFID Mobile locally on the device (mainly for it's OOTB store/forward mechanism).

After weighing up several options in this solution and how to get data to/from the device reliably I decided to go with SqlCe Merge Replication as we needed to push/pull data from several tables and schema changes.

4) Which leads me onto one of the most little known items......

How do I setup SqlCe Merge replication? it's a mine field, change something here and boom over there.

The picture
image

Phase 1:

Forget ISA for the moment. If you can, aim to get replication running in a local environment first (e.g. Local LAN on same network, through VPNs etc)

Getting the SQL bits Setup
Ok - the pieces to the initial puzzle.....

  1. Sql Server Side
    1. Sql Server and it's additional Sql Mobile Replication Bits - download from here.
    2. IIS to expose a replication 'end point' where the remote devices will connect to and replication will take place through. IIS can be separate out onto a different machine.
    3. As in my case, somewhere that the 'snapshot' DB information will live to merge down to the devices. Mine was a UNC share - SQL created this after I completed the Publication wizard.
    4. Installation -You want the SQL Server Compact 3.5 Server Tools installed on BOTH the IIS AND SQL Machines (if these are one and the same, then you only need it once)
      The server tools has two main components - one being the bits that drive IIS and the other being a wizard that configures the exposed virtual directory and sets security onto it.
      If IIS and SQL are on separate machines, the easiest way to go is:
      -
      get SQL to publish the snapshot to a UNC share e.g. \\sqlserver\data
      - On the IIS box, run the Configure Web and Synchronization Wizard (installed with the above server tools) and a later screen will ask you where this data is coming from - simply point to the UNC share.
  2. Mobile Device Side
    1. The equivalent SQL Mobile Replication tools need to be installed (above and beyond just normal SqlCe database components install) - SQL Server Compact 3.5 for Windows Mobile
      *** NOTE: make sure that the bits on both the Mobile + Servers all match ***
  3. Server Side Security - For this let's work backwards, from the publication through to the exposed endpoint.
    1. Publication Security - this is set through the Publication Access List within SQL Mgmnt Studio
      The group in question is the ExhibitorsGroup

      Create a publication within the SQL Management Studio

      image
      (Publication General Properties)

      image
      (Snapshot Properties - note the file location)

      image
      (FTP Snapshot + Internet - I've just used Internet and no IIS server name as this is configured in the Mobile Wizard)

      image
      (Publication access list - I've blanked out sensitive info, but you can see the BETDEV\ExhibitorGroup being manually addded to the list)
      The rest of the publication settings are defaults - for me anyway.
    2. Let's go to the UNC share - = C:\Public\Exhibitor.SqlCE.FileShare
      This is the UNC share that IIS repl component will connect to at the back end.
      Note: the BETDEV\ExhibitorsGroup obviously needs r/w access to this folder.
      image
    3. Let's run the 'Configure Web and Synchronization Wizard' to configure the IIS component.
      (you'll find it off the tools menu after you've installed the Mobile Server Tools from the links above)
      Note: one of the interesting things I found here is that after running the wizard, I normally go a tweak a few things in IIS - directory browsing etc. As a rule of thumb, if you want to change something with the Virtual Directory that is created at the end of this wizard, re-run the wizard to do it!!! :)

      image
      Press next if prompted with the welcome screen note my options here - SQL Mobile and press Next.Cool

      image
      Select the site and Create a Virtual Directory (I'm re-running the wizard so I'm going to select Configure Existing). Press Next.

      image
      I created an alias of SqlCERepl directory and accepted a sub-directory under the SqlMobile dir.
      (you can change this, but looking around the forums it was a source of grief - I could do without :) )

      image
      Here - I selected HTTP and not HTTPS access to the VirtualDirectory (and SQL Service agent).
      I did this as if you remember the diagram at the top of this post, ISA will serve as the HTTPS endpoint and will fwd the request via HTTP to our IIS/SQL box.
      IF you do want to change from HTTP to HTTPS or visa versa - re-run this wizard. Save you about 4 hrs of head banging.
      Click Next when ready.

      image
      On this page - I selected 'Authentication required' and not anonymous. This has something to do with the data that I'm replicating as I'm using a Filter based on 'UserName'. So in my case, the username that the devices connect with will be my differentiator (I looked into using something like 'deviceID' but didn't get too far)
      Click Next.

      image
      Select the type of authentication to be made against IIS - I selected NTLM (basic is fine also - but you need to be mindful that we're using HTTP at this point)
      Quick note on Security: So far, we've got 2 areas that need authentication.
      1) the IIS virtual directory and 2) accessing the actual SQL Publication in the UNC share and SQL Publisher Access List.

      So if the two machines are separated (IIS + Sql), NTLM will no transverse these machines (known as the 'double-hop' problem) so I'm assuming Basic or Kerberos is the safer bet.
      Click Next when ready.

      image
      On the Directory Access Screen note the presence of the ExhibitorsGroup and also this publication is accessing the UNC Share we created earlier.
      Next to continue.

      image
      UNC path specified - here you can see how this could be pointing to this SQL Share sitting on another machine as in the 2 machine hosted scenario.
      Click Next and Finish to see something like:
      image

      You're virtual directory is now configured.
      To test your configuration so far go to:
      /sqlcerepl/sqlcesa35.dll?diag" temp_href="http:///sqlcerepl/sqlcesa35.dll?diag">http://<server>/sqlcerepl/sqlcesa35.dll?diag - diagnostics screen to get something like:
      You should be prompted to login - enter account details that have access.
      image
      This is our fallback screen - next we will configure the ISA component and come back to our test screen to make sure.
      You're done - here. :)
  4. Configure ISA Server
    ISA server will be the bridge between our public SSL access and our internal IIS/SQL Server. We would effectively like ISA to simply route the request and pass it through without to much tampering with our good packets.

    ISA Server is on IP address: IP:Y_Internal
    The Internal Server here is : 10.1.0.191
    The public Interface on the ISA Server is for our purpose known as IP:X_Public
    and it's FQDN is : demo.micks.org (in otherwords - this is the public DNS name that will point to the public interface of your ISA box)

    NOTE: Make sure you have your SSL cert ready - I created an inhouse cert from a standalone cert server.
    You need at least a 'Server Authentication' Certificate to apply within ISA.
    (I'll show you a little trick in the mobile app to get round the fact that the certificate is from a non-trusted Cert. Authority by default)
    The friendly name on the cert should be - 'demo.micks.org' (without the quotes)
    All this keeps SSL happy.

    1. Create a publishing rule in ISA 2006 that will effectively route all requests coming to the public interface to our internal IIS/SQL Server.
    2. Fire up the ISA MMC and create a New Web Server Publishing Rule - I've called this sample rule, "Public to Internal IIS/SQL Repl"

      image
      Click Next when done.
    3. Rule Action - set to Allow
      image
      Next
    4. Publishing Type=Single Web
      image
      Next
    5. Server Connection Security - SSL.This means that SSL is going to be used over the public network.
      image
      Next
    6. On the Internal Publishing Details - I tend to hardcode the IP address in, just to reduce any ambiguity.
      Note the IP address - internally acessible only. 10.x.x.x
      image
      Next
    7. Further settings on the Internal Publishing Details
      NOTE: the option of fwding the original client host headers to the internal IIS/SQL (I found a variety of incomplete  HTTP Header details errors attempting to sync if I cleared this checkbox)

      We also can restrict the access on this rule by specifying the path of /SqlCeRepl/* (this is obviously the Virtual Directory created earlier)
      image
      Next
    8. Fill in your public DNS name - don't worry that the wizard screen is showing http://demo.micks.org and NOT https://demo.micks.org
      image
      Next
    9. Create a listener (if you need to ) as follows:
      (I've modified the screen shot slightly - from my listener)
      Note the ports: 8443 that SSL requests is coming on. You can use 443 if you prefer, I had other things on those ports)
      Also - I setup NO Authentication and replication works. You *could* try setting up Basic Authentication here and using Delegated Authentication (ISA server will login to the IIS/SQL box on your behalf with the inputted security credentials).

      I've also supplied the Certificate here as well (add your cert to the machine store ahead of time)

      A way to test if your auth is going to work - fire up your browser and try /sqlcerepl/sqlcesa35.dll?diag" temp_href="http:///sqlcerepl/sqlcesa35.dll?diag">http://<server>/sqlcerepl/sqlcesa35.dll?diag

      You should be prompted for login details ONLY ONCE. If you need to supply them twice and then you see the diagnostic page, your mobile application replication will fail :-(. Once and once only.
      image
      Next.
    10. Authentication Delegation- we want the client to auth. directly against the backend (routed through ISA of course :) )
      image
      Next.
    11. User Sets - because we don't have authentication here, ISA can't determine users, so All Users is our only option.
      image
      Next.
    12. What a glorious site....almost done......
      image
      Click Finish to complete the wizard.
    13. Right click on the rule just created and select Properties - we need to change the Link Translation to OFF
      image 
      This was the major source of my grief - I kept getting 'HTTP Headers malformed...' ERROR:28035 when trying to sync from the Device - yay!

      I was fortunate to be able to contact a friend of mine Darren Shaffer (Mobile MVP) that explained what was required to be sent back/forth in the headers during the conversation - big thanks there Darren!
    14. You should be able to browse to /sqlcerepl/sqlcesa35.dll?diag" temp_href="https:///sqlcerepl/sqlcesa35.dll?diag">https://<yourserver>/sqlcerepl/sqlcesa35.dll?diag - it should WORK :)
      If not - resolve before moving on. (you may get IE grumbling about the Certificate being invalid if it's an inhouse cert)
  5. Configure the MOBILE replication piece!!!
    1. Make sure you have installed the SQL CE 3.5 Core + Repl CABs at least.
    2. On the mobile device, I tend to have routines to Add and Remove DB Subscriptions as I found that if any publication changes on SQL Server happened - e.g. a field was modified, or a table added/removed from the Publication, then Merge Repl would fail even though it previously was working.

      Easier to Remove the Subscription on the local SQLCE db, and then add it again.

      Note: InternetUrl = " temp_href="https://">https://<yourserver.com>
      Username + pass must be a user that has access to all the bits we configured above. In my case, someone who is a member of the ExhibitorsGroup.

      The code looks like this:
         1:   public void AddReplAndSync()
         2:          {
         3:              //using System.Data.SqlServerCe;
         4:              bool bAddRepl = false;
         5:              try
         6:              {
         7:                  if (DoDBLookup("SELECT count(*) as cRow FROM __sysMergeSubscriptions WHERE Subscriber='ExhibitorSubscription'", "cRow") != "1")
         8:                  {
         9:                      bAddRepl = true;
        10:                  }
        11:              }
        12:              catch 
        13:              {
        14:                  bAddRepl = true;
        15:              }
        16:   
        17:              SqlCeReplication repl = new SqlCeReplication();
        18:              repl.InternetUrl = AppSettings.Settings.ReplServer +  "sqlcesa35.dll";
        19:              repl.InternetLogin = AppSettings.Settings.ReplUser;
        20:              repl.InternetPassword = "XXXXXX";
        21:              
        22:              repl.Publisher = AppSettings.Settings.ReplPublisher;
        23:              repl.PublisherDatabase = AppSettings.Settings.ReplPubDB;
        24:              repl.PublisherSecurityMode = SecurityType.NTAuthentication;
        25:              repl.Publication = AppSettings.Settings.ReplPubName;
        26:              repl.Subscriber = AppSettings.Settings.ReplSubName;
        27:              repl.SubscriberConnectionString = string.Format("DATA SOURCE='{0}'", ESDAL.GetDBPath());
        28:              
        29:              try
        30:              {
        31:                 if (bAddRepl)
        32:                     repl.AddSubscription(AddOption.ExistingDatabase);
        33:                 CloseAllDBConnections();
        34:                 repl.Synchronize();
        35:              }
        36:              catch (SqlCeException e)
        37:              {
        38:                  MessageBox.Show(e.ToString() + e.NativeError.ToString());
        39:              }
        40:              
        41:          }
        42:   
        43:          public void ReplRemove()
        44:          {
        45:              CloseAllDBConnections();
        46:              SqlCeReplication repl = new SqlCeReplication();
        47:              repl.SubscriberConnectionString = string.Format("DATA SOURCE='{0}'", ESDAL.GetDBPath());
        48:              repl.InternetUrl = AppSettings.Settings.ReplServer +  "sqlcesa35.dll";
        49:              repl.InternetLogin = AppSettings.Settings.ReplUser;
        50:              repl.InternetPassword = "XXXXXX";
        51:              repl.Publisher = AppSettings.Settings.ReplPublisher;
        52:              repl.PublisherDatabase = AppSettings.Settings.ReplPubDB;
        53:              repl.PublisherSecurityMode = SecurityType.NTAuthentication;
        54:              repl.Publication = AppSettings.Settings.ReplPubName;
        55:              repl.Subscriber = AppSettings.Settings.ReplSubName;
        56:              try
        57:              {
        58:                  CloseAllDBConnections();
        59:                  repl.DropSubscription(DropOption.LeaveDatabase);
        60:              }
        61:              catch (SqlCeException e)
        62:              {
        63:                  MessageBox.Show(e.ToString() + e.NativeError.ToString());
        64:              }
        65:          }
        66:   
        67:          private void CloseAllDBConnections()
        68:          {
        69:              if ((_dbCon != null) && (_dbCon.State != ConnectionState.Closed))
        70:              {
        71:                  _dbCon.Dispose();
        72:                  _dbCon = null;
        73:                  GC.Collect();
        74:              }
        75:   
        76:          }

Trick to deal with Inhouse generated certificates -
Within your mobile app we create a class that essentially returns True when asked 'Is this Cert. valid?'

Somewhere upon starting up your app - e.g. Form_Load - insert LINE#1 below.

LINE#3 onwards describes the class 'MyCustomSSLPolicy'

   1:  System.Net.ServicePointManager.CertificatePolicy = new MyCustomSSLPolicy();
   2:  ......
   3:  using System;
   4:  using System.Collections.Generic;
   5:  using System.Text;
   6:  using System.Net;
   7:  using System.Security.Cryptography.X509Certificates;
   8:   
   9:  namespace MicksDemos.Utilities
  10:  {
  11:      public class MyCustomSSLPolicy : ICertificatePolicy
  12:      {
  13:          public bool CheckValidationResult(ServicePoint srvPoint,
  14:          X509Certificate certificate, WebRequest request, int certificateProblem)
  15:          {
  16:              return true;
  17:          }
  18:      }
  19:  }



Closing note:

Hope you find this useful - I've done this a few times now and am amazed with the lack of info around this especially through ISA.

If you get any errors around "Can't contact SQL Reconciler..." etc errors - GENERALLY try and rebuild the snapshop server side, then try syncing again.

Nighty night!

Thursday, August 07, 2008 12:37:05 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   .NET Developer | RFID | Tips  | 
# Wednesday, August 06, 2008

Folks - fellow MVP Richard Seroter has written a VERY comprehensive series around this very topic including the new BizTalk Adapter Pack V1.0 (V2.0 is in Beta at the moment).

Over 20+ thousand words + 178 screen shots - all for the love of BizTalk/WCF.

Complete with Source Code!!!

What a champion series - I'm looking forward to in tucking into some of his great material!

The BizTalk community is in debt to you Richard - well done!!!

SERIES SUMMARY FOUND HERE

Wednesday, August 06, 2008 11:06:02 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2]   .NET Developer | BizTalk | Insights | Training  | 
# Monday, July 21, 2008

This one came from Paolo Salvatori (a senior PM within the MS Connected Systems Division Team... I know a bit of a mouthful) whom has gotten in touch with his creative side and drawn a picture for all us common folk :) - well done Paolo.

The scenario is - a Request/Response Port is published at the 'front end', goes through BizTalk and the work is done by a backend system that operates via a One-Way Send and BTS gets the response via another One-Way Receive.

The thing I like about Paolo's piece of work is that he shows all the Message Context Properties required to be set by BizTalk for message correlation.
Which makes this a Messaging Only Solution and NO Orchestrations required!!!! (how cool)

 

BizTalk Request Response Port

 

Click on the image to enlarge......one day I'll get Silverlight Zoom Composer control running for these.... :)

Monday, July 21, 2008 7:04:00 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [2]   .NET Developer | BizTalk | Insights  | 
# Saturday, July 19, 2008

While building up some BizTalk R2 developer images I can across the answer to my question "Is R2 supported on 2008 Hyper-V?"

Look no further than here.....

http://www.microsoft.com/downloads/details.aspx?FamilyID=5c5d86ad-5e17-4ff2-abc9-5a81177f4b30&DisplayLang=en

Saturday, July 19, 2008 2:04:30 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   BizTalk | Insights  | 
# Sunday, July 13, 2008

After the more than normal pain in getting this done for my previous post, I decided to post the fruits of my labour (not labor that my wife tells me about watermellons and men wouldn't know the first thing about birth....I'm not about to do the pepsi challenge on that :))

- this is a stock standard Web.Config for a MOSS install NOT a plain WSS install (there's about 3 lines different from a plain WSS install to a MOSS install - mainly anything that references SharePoint.Publishing....)

Grab this and these are the changes that WORK!

Enjoy!

Cheers,

Mick.

Sunday, July 13, 2008 10:38:41 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   .NET Developer | MOSS | Silverlight  | 

"Could not load file or assembly 'System.Web.Silverlight, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies."

You're starting to Roll your sleeves up and get dirty with Silverlight 2 Beta 2, load up some of the Silverlight Blueprint for SharePoint Samples, run the installer (it's great that most of these examples have an installer) and Boom! you get the above error!!!

Here's a list I've compiled to get Silverlight working - I'm currently running this on Win2008 IIS7

(1) Install WSS SP1/MOSS SP1 on your SharePoint box if you haven't already. You need the SP1 to support .NET 3.5 calls through SharePoint - my guess is that these tell SharePoint not to intercept the calls and let them go to their rightful owners.

(2) Create a 'dummy' site collection on a test Web Application - e.g. http://localhost:81 - This is so you can see all the changes to the web.config that are made through the installation process, in isolation. By keeping this separate to your usual web.config, you'll be able to merge changes at a later date.

(3) Install the Silverlight 2 Beta 2 runtime and other developer bits - From http://Silverlight.net - VS2008 Developer Bits and just the runtime if you want from here

(4) Do one installation of a Silverlight for BluePrint Sample - the installer creates a 'virtual directory' under your Web Site called ClientBin where the various Silverlight 2 files go (*.js, *.XAP). This is a handy install so you can see what the directory execution settings are required to make this work through SharePoint. i.e. Execute permissions only. Take note of this directory.

(5) Add a IIS MIME type - With Silverlight 2 beta 2 - there is a new file type added which is a *.XAP file type. IIS by default doesn't know how to encode/translate or send these files down over the wire.
Add a mime type of: Extention: xap Mime Type: application/x-silverlight-app to your IIS Test Web Site

(6) Make Web.Config changes - there's a whole series of Web.Config changes to be made to your SharePoint Web Application to support AJAX/.NET 3.5 and now Silverlight.... fortunately other hard working folks have done this for you!!!! :) Bless their cotton socks! - grab the Feature that makes the modifications from here (** NB: you want the 3.5 config feature)

You're almost done........ :)

(7) EXCEPT for the error above!!! After much inspection of your system, you'll realise that you *don't* have that DLL (on a clean install). The Silverlight Ninja will know that this is from Silverlight 2 Beta 1 and not found in the Beta 2 kits!! Yay team!

The System.Web.Silverlight.dll is found in the Silverlight 2 beta 1 SDK - so download that puppy, extract out the DLL and either GAC it, or add it to your BIN directory on your SharePoint site. (I added it to my BIN directory - as I reckon when SL2 is released, this problem would have been resolved)
(**UPDATED: Due to how painful that was, I decided to package up the DLL for you - HERE**)

Here are the Compiled Files - FOR SL2 BETA 2 - they WORK!! :-)

(I grabbed the Blueprint Hello World Web Part and updated to work)

1. Silverlight Web Part DLL

2. Silverlight *.XAP updated for Beta 2, copy straight to the *sub-directory* under your client BIN

3. Sample SharePoint Web.Config with all the changes! :-)

Sunday, July 13, 2008 9:08:09 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [4]   .NET Developer | MOSS | Silverlight  | 
# Thursday, July 10, 2008

A couple of Key registry settings for the HL7 adapter that I thought I'd jot down onto my online diary.

Some tweaks to apply under heavy load to the HL7 adapter

  1. Create the registry key MLLPSendFlushTimeout
    1. Create new registry key under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BizTalk Accelerator for HL7/Version 2.0 with following details:
    2. Name : MLLPSendFlushTimeout
    3. Value : 0
  2. Set MaxReceiveInterval to 50 ms
    1. Open Microsoft SQL Server Management Studio.
    2. Expand Databases node and select BizTalkMgmtDb database.
    3. Expand Tables node and open table adm_ServiceClass.
    4. Set the value of MaxReceiveInterval to 50ms corresponding to the Name=Messaging InProcess.
      Initially it is 500ms.
Thursday, July 10, 2008 9:00:41 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   BizTalk | Insights  | 

One of the handiest tools I've used in the last year - http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx

If you're presenting, even just showing your code, screen to colleagues then this is superb

Thursday, July 10, 2008 8:50:48 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   .NET Developer | Other | Tips  | 
# Wednesday, July 09, 2008

Guys - this document has recently hit the shelves and what a great guide it is. Written and reviewed by a huge team within MMS mostly - the two main authors Ewan Fairweather and Rob Steel (both MS and very much project/client oriented guys - out in the field!) did a superb job.

Firstly - grab the Performance Optimisation Guide
(checkout Ewan and Rob's blogs as there's some great bits on there, as well as a section dedicated to the BizTalk Performance Explorer)

What's the meaty stuff I can expect to read? (I hear you ask...)

1. It serves as 2 things - a prescriptive guidance and two - best practices around optimisation
(It's also great to see BizUnit in there for testing and as part of LoadGen)

I've summarised below:

The key sections of the guide are:

· Getting Started: Provides an overview of the BizTalk Server functional components that can affect performance. It also describes the phases of a BizTalk Server performance assessment.

· Finding and Eliminating Bottlenecks: The Finding and Eliminating Bottlenecks section describes various types of performance bottlenecks as they relate to BizTalk Server solutions and information about how to resolve the bottlenecks.

· Automating Testing: Describes how to implement an automated build process and how to automate functional and load testing using Visual Studio Team System, BizUnit and Loadgen.

· Optimizing Performance: The Optimizing Performance section provides guidance for optimizing performance of specific components in a BizTalk Server environment

 

Other 'related stuff' to download while you're in the mood

  1. Microsoft BizTalk Server Operations Guide
  2. BizTalk Server 2006 R2 Installation and Upgrade Guides
  3. BizTalk Server 2006 Tutorials
  4. BizTalk Server 2006 R2 Runtime Architecture Poster
  5. BizTalk Server 2006 R2 Capabilities Poster
Wednesday, July 09, 2008 10:14:10 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   BizTalk | Insights  | 
Copyright © 2010 Breeze Training. All rights reserved.