Pivoting from Rugged Windows Mobile Handhelds to Windows Tablets

Tablet App

I first noticed the phenomenon of companies with route drivers moving from ruggedized Windows Mobile handhelds to Windows tablets a few years ago.

The thinking was you could turn these folks who perform direct store delivery (DSD), pickup and delivery, and dispatched tasks into sellers and marketers. The tablet would run a bigger version of the handheld app, while also providing a vivid product catalog and perhaps even videos to show the customer at the point of activity. The Windows tablets back then were thick, heavy, and had marginal battery life that wouldn’t make it through a complete shift without charging it in the truck while driving. A lot of them followed Intel’s reference design for a healthcare-focused tablet with an integrated handle. Anyway, in spite of the shortcomings of yesterday’s Windows 7 tablets, it was a good idea. The Windows Forms apps that ran on the .NET Compact Framework were easily ported to the full .NET Framework on the tablet since the only change was the screen size. Those field employees found their app easier to use (and see) while becoming part-time upsellers.

Tablet App

Things are even better with today’s Windows 8 tablets. The world’s most popular operating system is faster, more secure, and uses less memory and fewer resources than it’s predecessors. Intel has followed suit with a system on chip (SoC) design called Clover Trail (Atom) that gives thin and light tablets better performance, x86 compatibility, and 10 hours of battery life. OEMs have combined Windows 8 and Intel’s new multicore Atom processor to create enterprise-class tablets that are thinner and lighter than the iPad. All of them support capacitive multitouch and some include a digitizer stylus. A huge opportunity has presented itself to move the .NET Compact Framework apps that most every company around the world depend on to run their business. Using Microsoft’s latest version of Visual Studio and .NET, those full screen Windows Mobile apps can be upsized to full screen Windows Forms apps designed for touch on Windows 8 tablets. Your existing UI, business logic, SQL Server Compact database, and data sync code will all make the move. Once you enlarge your font sizes as well as your touchable UI elements, you’ll be good to go for deployment. There is no faster, cheaper or lower risk way to move your existing apps to the tablet era. Contrast this with the millions you might spend porting those apps to other platforms using completely different development tools, programming languages, and technologies. Speaking of risk, there’s no guarantee that alternate tablet technologies will support your existing Bluetooth and USB peripherals like thermal printers, RS232 adapters, barcode scanners, and DEX interfaces just to name a few.

The focus of your business is to make money at whatever you’re good at. It’s not about perpetually running on the technology Hamster wheel. If you’re considering making a move from Windows Mobile or Windows Embedded Handheld devices to tablets, I’ve just laid out your fastest time to value. Oh, and don’t worry, your updated, full screen, touchable WinForms apps will work just fine with the keyboard and mouse/trackpad on your Windows 7 laptops and tablets. Sounds pretty pragmatic, doesn’t it?

If you’re ready to go deep on this sync technology to build enterprise apps that run on Windows tablets and laptops, click this link to purchase my book, “Keeping Windows 8 Tablets in Sync with SQL Server 2012.”

– Rob

Sharing my knowledge and helping others never stops, so connect with me on my blog at http://robtiffany.com , follow me on Twitter at https://twitter.com/RobTiffany and on LinkedIn at https://www.linkedin.com/in/robtiffany

Sign Up for my Newsletter and get a FREE Chapter of “Mobile Strategies for Business!”

[mc4wp_form id=”5975″]

Windows Mobile Provisioner

Mobile Provisioner: Data Connections

In the Spring of 2006, I created a Mobile Device Management (MDM) package for Microsoft called Windows Mobile Provisioner.  It was used by Microsoft IT (MSIT) to rapidly provision and manage Windows Mobile devices / smartphones for our employees in the years before we developed and shipped System Center Mobile Device Manager 2008.  I drew on my experience in designing, developing, shipping, marketing, and selling the NetPerceptor MDM package for the cloud (Level 3) back in 2003 with my co-founder Darren.  Of course, OMA DM and CSPs made creating an MDM system much easier in 2006.

Windows Mobile Provisioner fully integrated with Active Directory to allow the management of policies, settings, and over-the-air (OTA) software distribution based on Microsoft users and groups.  As you might imagine, there was a Management and Reporting dashboard as well as a mobile client for user self-service.

The first image below shows the client app where a user could rapidly configure Exchange ActiveSync (EAS) from a single screen:

Mobile Provisioner: Exchange Settings













The second image below shows the client app’s ability to configure the data connections for different mobile operators globally:

Mobile Provisioner: Data Connections















The last image below shows how the client app allowed users to change the themes of their smartphone:

Mobile Provisioner: Device Themes















Of course, my MDM solution sent health metrics as well as device and app inventory to the server for analysis.  Administrators could push out patches, anti-virus definitions, ROM packages, and other software to selected devices.  Apps could also be remotely uninstalled.  In addition to the features described in the images above, the rich client app that accompanied the MDM agent gave users the ability to view and download apps, ring tones, and other content made available to users and groups via Active Directory security. I certainly hope the MDM solution your company is using “at least” does all the stuff I just mentioned from a long time ago.

It was a great experience being an early pioneer in the Mobile Device Management (MDM) space; and the first to do it in the cloud at the beginning of the 21st century.  Back then, I could count all the MDM competitors on my two hands.  Fast-forward to 2012, I think there’s over 100 different players in this space.  The majority of them are indistinguishable from each other as they all target the identical MDM APIs exposed by iOS and Android.  As usual, differentiation will be invented by marketers.

Good Times,


Sharing my knowledge and helping others never stops, so connect with me on my blog at http://robtiffany.com , follow me on Twitter at https://twitter.com/RobTiffany and on LinkedIn at https://www.linkedin.com/in/robtiffany

Sign Up for my Newsletter and get a FREE Chapter of “Mobile Strategies for Business!”

[mc4wp_form id=”5975″]

Sync Framework v4 is now Open Source, and ready to Connect any Device to SQL Server and SQL Azure


Microsoft has brought the power to synchronize data with either SQL Server on-premise or SQL Azure in the cloud to the world of mobility.

The profound effects of the Consumerization of IT (CoIT) is blurring the lines between consumers and the enterprise.  The fact that virtually every type of mobile device is now a candidate to make employees productive means that cross-platform, enabling technologies are a must. If you’ve ever synched the music on your iPhone with iTunes, the calendar on your Android device with Gmail, or the Outlook email on your Windows Phone with Exchange, then you understand the importance of sync.  In my experience architecting and building enterprise mobile apps for the world’s largest organizations over the last decade, data sync has always been a critical ingredient.

The new Sync Framework Toolkit found on MSDN builds on the existing Sync Framework 2.1’s ability to create disconnected applications, making it easier to expose data for synchronization to apps running on any client platform.  Where Sync Framework 2.1 required clients to be based on Windows, this free toolkit allows other Microsoft platforms to be used for offline clients such as Silverlight, Windows Phone 7, Windows Mobile, Windows Embedded Handheld, and new Windows Slates.   Additionally, non-Microsoft platforms such as iPhones, iPads, Android phones and tablets, Blackberries and browsers supporting HTML5 are all first-class sync citizens.  The secret is that we no longer require the installation of the Sync Framework runtime on client devices.  When coupled with use of an open protocol like OData for data transport, no platform or programming language is prevented from synchronizing data with our on-premise and cloud databases.  When the data arrives on your device, you can serialize it as JSON, or insert it into SQL Server Compact or SQLite depending on your platform preferences.

The Sync Framework Toolkit provides all the features enabled by theSync Framework 4.0 October 2010 CTP.  We are releasing the toolkit as source code samples on MSDN with the source code utilizing Sync Framework 2.1.  Source code provides the flexibility to customize or extend the capabilities we have provided to suit your specific requirements. The client-side source code in the package is released under the Apache 2.0 license and the server-side source code under the MS-LPL license.  The Sync Framework 2.1 is fully supported by Microsoft and the mobile-enabling source code is yours to use, build upon, and support for the apps you create.





















Now some of you might be wondering why you would use a sync technology to move data rather than SOAP or REST web services.  The reason has to do with performance and bandwidth efficiency.  Using SOA, one would retrieve all the data needed to the device in order to see what has changed in SQL Server.  The same goes for uploading data.  Using the Sync Framework Toolkit, only the changes, or deltas, are transmitted over the air.  The boosts performance and reduces bandwidth usage which saves time and money in a world of congested mobile data networks with capped mobile data plans.  You also get a feature called batching, which breaks up the data sent over wireless networks into manageable pieces.  This not only prevents you from blowing out your limited bandwidth, but it also keeps you from using too much RAM memory both on the server and your memory-constrained mobile device.  When combined with conflict resolution and advanced filtering, I’m sold!

I think you’ll find the Sync Framework Toolkit to be an immensely valuable component of your MEAP solutions for the enterprise as well as the ones you build for consumers.

Keep Synching,


Sharing my knowledge and helping others never stops, so connect with me on my blog at http://robtiffany.com , follow me on Twitter at https://twitter.com/RobTiffany and on LinkedIn at https://www.linkedin.com/in/robtiffany

Sign Up for my Newsletter and get a FREE Chapter of “Mobile Strategies for Business!”

[mc4wp_form id=”5975″]

Performance and Memory Management Improvements with Windows Embedded Handheld

A lot has changed since the launch of Windows Phone in the Fall of 2010.

Microsoft now has a compelling phone platform that targets consumers inside and outside the office.  One thing that that hasn’t changed is the widespread use of Windows Embedded Handheld to solve tough enterprise mobility problems.  It should be no surprise that over 80% of enterprise handhelds shipped are running Windows Mobile or Windows Embedded Handheld.  They include support for barcode scanning, RFID reading, rugged hardware, every type of wireless, full device encryption, complete over-the-air software distribution and device managment support, FIPS compliance, and both capacitive touch and stylus operation.  On the application platform side of the equation, they have rich support for WinForm development using Visual Studio and the .NET Compact Framework, C++ and a full-featured database with built-in sync capabilities via SQL Server Compact.  They can easily communicate with WCF SOAP and REST web services running on Windows Servers on-premise or with Azure in the cloud.  Support for Merge Replication means faster time to market to get device synchronizing with SQL Server with almost no coding.



















Since Windows Embedded Handheld uses an advanced version of the operating system kernel used by Windows Mobile 6.5.3, many of the techniques and best practices I’ve taugh customers and developers all over the world still apply.  While it still uses the slotted memory model found in Windows CE 5 with 32 processes and 32 MB of memory per process, you’ll find that numerous enhancements and tuning has taken place to give your line of business apps more of what they need.  I’m talking about more memory per process and improved performance.

A recent Gartner report recommends that organizations should stay with Windows Embedded Handheld as the best mobile platform for enterprise line of business needs.  Great devices are available from OEMs like Intermec, Motorola, Psion, and Honeywell just to name a few.  I hope this video helps you with any memory management or performance issues you may need to deal with in your enterprise mobile apps.


Sharing my knowledge and helping others never stops, so connect with me on my blog at http://robtiffany.com , follow me on Twitter at https://twitter.com/RobTiffany and on LinkedIn at https://www.linkedin.com/in/robtiffany

Sign Up for my Newsletter and get a FREE Chapter of “Mobile Strategies for Business!”

[mc4wp_form id=”5975″]

How Not to Present a Session at a Techical Conference

Windows Mobile

Prior to the Mobile and Embedded Developer Conference (MEDC) back in 2007, my teammates Loke Uei Tan, Mike Hall, James Pratt, Derek Snyder and I made a movie that illustrates presentation worst practices…


Sharing my knowledge and helping others never stops, so connect with me on my blog at http://robtiffany.com , follow me on Twitter at https://twitter.com/RobTiffany and on LinkedIn at https://www.linkedin.com/in/robtiffany

Sign Up for my Newsletter and get a FREE Chapter of “Mobile Strategies for Business!”

[mc4wp_form id=”5975″]

Confronting the Consumerization of IT with Microsoft MEAP

Microsoft MEAP

CIOs are asking for help in confronting the tidal wave of mobile devices entering the enterprise and IT departments have raised the white flag as attempts to block consumer-focused smartphones and tablets have failed.

The Consumerization of IT has been a growing trend fueled by cloud-delivered services and compelling mobile devices with wireless capabilities.  This trend snowballs more and more each year, meaning it’s time to embrace it rather than put your head in the sand.  Microsoft MEAP is the answer.  I’ve been talking to you about how Microsoft aligns with Gartner’s Mobile Enterprise Application Platform (MEAP) for years now, and I wanted to update you on how we’ve evolved with respect to Gartner’s Critical Capabilities.  As a refresher, MEAP is Software + Services that allow IT orgs to extend corporate apps to mobile employees and business partners.  This platform must support:

  1. Multiple mobile applications
  2. Multiple mobile operating systems
  3. Multiple backend systems maximizing ROI vs. tactical solutions

It’s already a $1 Billion business and 95% of orgs will choose MEAP over point solutions by 2012.   The picture below represents some of our familiar cloud and on-premise servers on top and a wide spectrum of mobile devices from Microsoft and other manufacturers on the bottom:

Microsoft MEAP

Let’s do a quick rundown of Gartner’s Critical Capability list so you can see how we rise to their challenge:

  1. Integrated Development Environment for composing server and client-side logic: Microsoft Visual Studio supports on-premise and cloud server development and targets clients such as Windows, Windows Phone 7, Windows Mobile, the Web, Nokia S60, and the Macintosh.
  2. Application Client Runtime: Various flavors of Microsoft .NET (Silverlight, .NET, Compact Framework) run on Azure, Windows Server, Windows, the Mac, Windows Phone 7, Windows Mobile, and Nokia S60.  Guess what, you can use MonoTouch to take your .NET skills to the iPhone, iPad and iPod Touch.  MonoDroid is in the preview stage and will bring .NET to Android phones and tablets in the future.
  3. Enterprise Application Integration Tools: Connecting mobile devices to a variety of backend packages like Dynamics or SAP is critical.  Microsoft supports this integration in the cloud via Windows Azure AppFabric and on-premise though SQL Server Integration Services and dozens of adapters.  Tools like our Business Intelligence Dev Studio make EAI a repeatable, drag and drop exercise.
  4. Packaged Mobile Apps: Microsoft delivers the Office suite across Windows, Windows Phone 7, Windows Mobile, the Web and the Mac.  Office will be coming to Nokia in the future and One Note just arrived on iOS.
  5. Multichannel Servers: Windows Server + SQL Server on-premise and Windows Azure + SQL Azure in the cloud represents Microsoft’s mobile middleware platforms.  Windows Communication Foundation (WCF) delivers cross-platform SOAP & REST Web Services and cross-platform wire protocols like XML, JSON and OData.
  6. Software Distribution: Microsoft System Center Configuration Manager supports pushing software out to Windows and Windows Mobile.  Windows Phone 7 has Marketplace for this function.
  7. Security: Data-in-transit is secured by SSL across all platforms.  Data-at-Rest security for apps is facilitated on Windows by BitLocker, Windows Mobile through encryption policies and Windows Phone 7 through AESManaged in Silverlight.  Cross-platform auth is facilitated by Microsoft Windows Identity Foundation so devices can access resources via a Windows Live ID, Facebook, Google, Yahoo, ADFS and others.
  8. Hosting: It goes without saying the Microsoft knocks the hosting requirement out of the park with Azure.

So what do I want you to take away from all this?

Microsoft has a great MEAP stack comprised of servers and skillsets you probably already have at your company.  You get maximum reuse on our servers and in our cloud which means you save money when it’s time to build and deploy your second, third and fourth mobile app without new training, new servers, and different technologies each time.  I hope you’re pleasantly surprised to see that our .NET application runtime lives on so many mobile platforms.  Again, this means that your existing .NET skills can be reused on Microsoft devices, the Web, Mac, Nokia and even the iPad.  Who knew?  I’m looking forward to bring Android into the .NET camp as well.

It’s a brave new world of disparate devices connected to the cloud.  Companies have no choice but to target most all of them when constructing B2C apps to sell products or bring in new customers.  They’ve also found that this is the case in supporting their own employees and business partners with B2E and B2B apps.  No single company has so many different skillsets and competencies to pull this off.

There is one thing that most companies do have though.  A Microsoft infrastructure in their data center or the cloud, Windows on desktops, laptops and tablets, plus teams of .NET developers.  As I’ve just shown you, these .NET developers armed with Visual Studio or MonoTouch can be unleashed to allow you to reach almost every mobile platform.  This dramatically reduces the amount of extra Java and Eclipse skills that you’ll consider bringing in-house or outsourcing in order to target platforms like Android or the Blackberry.  Through the magic of WCF, all these platforms can connect to your critical Microsoft back-end resources and beyond.  You save money on training, use the servers you already have, resuse business logic and get to market faster.  No matter what platform you need to target, Microsoft and its partners want to help you reach your goals.

Looks like you’re already ahead of the game in taking on the Consumerization of IT.


Sharing my knowledge and helping others never stops, so connect with me on my blog at http://robtiffany.com , follow me on Twitter at https://twitter.com/RobTiffany and on LinkedIn at https://www.linkedin.com/in/robtiffany

Sign Up for my Newsletter and get a FREE Chapter of “Mobile Strategies for Business!”

[mc4wp_form id=”5975″]

Reducing SQL Server I/O Contention during Sync :: Tip 1

SAN Storage

Sync technologies like Merge Replication and the Sync Framework track changes on SQL Server using triggers, stored procedures and special tracking tables.  The act of tracking changes made by each SQL Server Compact or Silverlight sync subscriber can cause a lot of locking and blocking on the server.  This diminishes performance and sometimes leads to deadlocks. SAN Storage

Therefore, don’t listen to your SAN administrator when he says the RAID 5 will do.  RAID 1 or 10 must always be used for all databases, tempdb, and transaction logs.  Furthermore, each of these database objects must be placed on their own dedicated RAID arrays.  No sharing!  Remembers, as a DBA and sync expert, knowledge of SAN configuration must always be part of your skillset.

Keeping synching,


Sharing my knowledge and helping others never stops, so connect with me on my blog at http://robtiffany.com , follow me on Twitter at https://twitter.com/RobTiffany and on LinkedIn at https://www.linkedin.com/in/robtiffany

Sign Up for my Newsletter and get a FREE Chapter of “Mobile Strategies for Business!”

[mc4wp_form id=”5975″]

Windows Phone 7: If at First You Don’t Succeed

Written by: J. Gerry Purdy


You have to hand it to Microsoft.   They have certainly fulfilled the old saying, “If at first you don’t succeed, try, try again.”  Microsoft has had a number of previous attempts to build a successful operating system for the mobile market with WinPad, Windows Mobile and Win CE.  These efforts – simply because they were Microsoft – generated some market presence but nowhere near the market share achieved by major players such as RIM (BlackBerry), Apple (iPhone) and Google (Android).


I thought it was poignant when Rob Tiffany, Mobility Architect at Microsoft, told me at CTIA that Microsoft went back to the drawing board to develop a new mobile OS from the ground up.  Steve Ballmer, Microsoft CEO, introduced Windows Phone 7 on Monday, Oct. 11 at a press conference in New York.


The reviews on Windows Phone 7 (WP7) have generally been positive.  I appeared on Brian Sullivan’s show on FoxBusiness to explain why I thought Microsoft would succeed with WP7, especially in the enterprise space.

One of the most important changes that WP7 provides over past Windows Mobile efforts is a re-architecture of the user interface.   Microsoft abandoned the desktop metaphor of the Start menu driving a list of applications.   While that was acceptable on the desktop, it wasn’t well-received in the mobile environment.

There are a number of user interface and technical innovations that WP7 brings to the mobile market, including:


  • New platform – WP7 is not an enhancement to previous Windows mobile efforts. It’s developed from the ‘ground up’ – no more forcing people to go through the Windows Start menu. It was designed to provide users with easy access to the information they want and need.



  • Active tiles – users can decide what’s important to them and allocate tiles to give them the information they need, e.g. a tile for messaging, a tile for social, a tile for news, etc. Take a look at the sample home screen on a sample WP7 phone.  It shows a number of Active Tiles that are user defined to make the initial images on the phone’s start up screen comfortable and personal to the user.
  • Panoramas – with panoramas, you swipe left and right to get more information.  This is a new user paradigm much like flip/scroll has become in the iPhone and Android for looking through lists by swiping up and down. This allows you to swipe left and right – a very cool concept. Take a look at the wide panoramas below.  Notice that the phone image at the top can sweep to the right to cover all the information about a topic and the sweep back to the left.  This allows applications to present a lot of information that appears the way the eye looks at the world – in a panoramic fashion.  Vertical scrolling is good for lists where panoramas are good for showing more of one kind of information such as a photo or image or set of items in a group.
  • Apps – Microsoft has created solid development tools to make it easy for (consumer and enterprise) developers to build exciting apps, e.g. extending X-Box for gaming, etc. and then publishing them in the Windows Phone Marketplace.




Phones will be produced using WP7 by Samsung, HTC, LG and Dell.  I suspect that Motorola may follow along as well in 2011.  Windows Phones will be distributed through AT&T Mobility and T-Mobile in the US at first and then via Verizon and Sprint  in 2011.  Some Windows Phones will have integrated keyboards and others will be touch screen only.  For example, the Samsung Omnia 7 incorporates a Super AMOLED screen, a 4-inch display, 5-mp camera with HD video and support of Xbox Live gaming and media content.


Microsoft has implemented multiple processes in the first rendition of Windows Phone which allows each app to switch back and forth.  Some developers may need full-scale multi-tasking for background operation which Microsoft will likely support at some future time.  They store the last place the user was in an application and then re-store it back when the app is re-launched to give the feel of being multi-tasking.  But, Microsoft wanted to make sure the first version was solid and, therefore, they deferred true multi-tasking to a later version.


Microsoft has made WP7 work well for both consumers and enterprise.  Consumers get a good user experience right out of the box that they can then personalize with Live Tiles.  Consumers will also get a streaming music service based on Microsoft’s Zune efforts.


I believe that WP7 will be received well in the enterprise for a number of reasons, including:


  • Microsoft Office. Right out of the box, WP7 will support opening and editing Word, Excel and PowerPoint files in a mobile edition of MS Office.
  • Outlook. Because Outlook is included as well, enterprise users who already are using Exchange/Outlook will get a friendly, familiar user interface for email. 
  • OneNote.  This is a note taking application that has seen very little adoption in the desktop but may find a much larger following in WP7 especially when joined with sharing of notes from a meeting with co-workers.
  • Security. Microsoft has invested a great deal of effort ‘under the covers’ to incorporate end to end security to make sure that enterprise IT professionals will be comfortable deploying WP7.
  • Enterprise Development.  Microsoft has provided the same development tools that many enterprises have used to create mobile applications.


Personally, I would have preferred if Microsoft had made a further separation from Windows by calling the new platform Microsoft Phone (with different version numbers) so that they could then have Windows 7 (for desktop and laptops) and then Phone 7 without the reference to Windows (for phones).


As for the tablet arena, most firms are leveraging the personal user interfaces and environments from the mobile world for tablets.  Apple has done this by using iOS from the iPhone with enhancements in the iPad (rather than using the Mac desktop OS).  A number of tablets (including the Samsung Galaxy TAB) are using Google’s Android mobile OS.  Thus, it seems likely to me that Microsoft will eventually develop a version of Windows Phone that they might dub Windows Tablet to support larger screens, gestures and the application Windows Phone Marketplace in the tablet arena.


I think RIM should be worried with the introduction of Windows Phone. The BlackBerry user interface has not changed much in the past 10 years.  BlackBerry devices are rock solid and work well but don’t provide the ‘sex appeal’ provided in Apple’s iOS or Google’s Android.  Also, Microsoft has great relationships with enterprise IT. They make it easy for enterprises to roll out Windows Phone instead of just BlackBerry phones. It will be interesting to see how RIM responds to Windows Phone over time.


Overall, Microsoft is back in the game with Windows Phone 7.  I look forward to spending some time with a Windows Phone and getting some hands-on experience.  In the end, it’s the users and enterprises that vote with their pocketbook, but it seems highly likely that Microsoft will earn significant market share over the next few years as they evolve Windows Phone.  Kudos to the Microsoft team to give the mobile world another good user experience.

We’ll look back on the mobile market 20-30 years from now and see how important it was to provide a number of different user interfaces and then to see how customers declare what they like the most.  


Written By:


J. Gerry Purdy, Ph.D.
Principal Analyst
Mobile & Wireless
MobileTrax LLC


Microsoft Outlines Commitment to the Future of Enterprise Handheld Devices

Embedded Handheld

Microsoft unveils new brand and road map, and extends support for the enterprise handheld devices market.

Redmond, Wash. — June 17, 2010 — No one would argue the way we work has changed. From retail, medical, manufacturing and a host of other industries, being tied to a fixed office location simply isn’t an option for a growing portion of the work force, and Microsoft is tackling this trend head-on. “Our Windows Embedded Business is focused on extending Windows and the benefits of cloud computing to the world of specialized devices,” said Steve Ballmer, Microsoft CEO.

Let’s face it: Real-time access to information isn’t just about increasing productivity. It’s how business is conducted every day around the world.

Steve Ballmer outlines Microsoft’s commitment to the future of enterprise handheld devices and the Motorola ES400.

Historically, Microsoft has offered two software platforms to help original equipment manufacturers (OEMs) deliver the next generation of enterprise handheld devices: Windows Embedded CE (the Windows Embedded Compact 7 community technology preview was announced June 1 and is available for download) and Windows Mobile.

Today, during Motorola’s launch event for its ES400 enterprise digital assistant (EDA) in New York, Ballmer announced that Microsoft is making several key investments in the enterprise handheld device market, including the new Windows Embedded Handheld brand. “These releases will provide proven management and security functionality, while giving customers confidence that investments in handheld enterprise devices and line-of-business applications will be protected over time by an extended support life cycle,” Ballmer said.

Windows Embedded Handheld is a new software platform designed to meet key line-of-business (LOB) scenarios and boost productivity of the mobile enterprise work force by enabling users to capture, access and act on business critical information where and when they need it. The first release under the brand is scheduled to come this calendar year and build on the Windows Mobile 6.5 platform with trusted management and security features, as well as enhanced protection for existing enterprise investments in LOB applications on devices.

For users, this means OEMs can take enterprise handheld devices — like the ones you see store employees using when you’re out shopping — and create something extraordinary. These devices can vary greatly in functionality, but imagine the potential to enhance key LOB applications with the rich, immersive user experiences of touch or gesture response, plus enhanced connectivity to Windows-based PCs, servers and enterprise services.

In addition, Ballmer announced that Windows Embedded will continue to support developer tools used in building applications and experiences on today’s devices, including Microsoft Visual Studio 2008 and Windows Forms. This will help provide confidence that the existing investments will be protected over time as Microsoft releases new software platforms, as the operating system support life cycle will be extended to more closely align with the typical life cycle of devices in the enterprise.

Likewise for enterprise customers of our OEMs, investments in existing enterprise LOB applications will also be protected. An updated Windows Embedded Handheld platform based on Windows 7 technologies (Windows Embedded Compact 7) will be released in the second half of calendar year 2011, offering enhanced features and functionality to meet the needs of networked enterprise devices. The platform will also enable new key scenarios through support for rich user interfaces and natural input. A clear migration path will be available for these applications with Microsoft tools and technologies to a new application platform based on Microsoft Silverlight and Microsoft XNA, as well as Visual Studio 2010, with the Windows Embedded Handheld release in 2011.

The future for enterprise handheld devices is endless. A current white paper from analyst firm VDC Research estimates there were 2.3 million device shipments in 2009 and anticipates this number to exceed 4.3 million by 2014. The Windows Embedded CE and Windows Mobile platforms accounted for 87 percent of these 2009 shipments, according to VDC Research, and the relationships with its partner ecosystem continue to strengthen.

Motorola’s ES400, just announced today, is a great example of what can be achieved when companies like Motorola and Microsoft collaborate to meet the needs of this space.

The ES400 integrates voice and advanced data capabilities, which bring out the full potential of mobile professionals by empowering them with the information and interaction they need to transform operations, increase enterprise profitability and complete their jobs virtually anywhere, anytime.


The next year is going to be a very exciting time for Windows Embedded as it continues to bring innovation to the enterprise handheld device space. Be sure to keep an eye on the Windows Embedded Newsroom for updates in the days, weeks and months ahead.

– Rob

Sharing my knowledge and helping others never stops, so connect with me on my blog at http://robtiffany.com , follow me on Twitter at https://twitter.com/RobTiffany and on LinkedIn at https://www.linkedin.com/in/robtiffany

Sign Up for my Newsletter and get a FREE Chapter of “Mobile Strategies for Business!”

[mc4wp_form id=”5975″]

Mobile Merge Replication Performance and Scalability Cheat Sheet

SQL Server Compact

If your Mobile Enterprise Application Platform (MEAP) is using SQL Server Merge Replication to provide the mobile middleware and reliable wireless wire protocol for SQL Server Compact (SSCE) running on Windows Mobile and Windows Embedded Handheld devices + Windows XP/Vista/7 tablets, laptops, desktops, slates, and netbooks; below is a guide to help you build the fastest, most scalable systems:

Active Directory

  • Since your clients will be passing in their Domain\username + password credentials when they sync, both IIS and SQL Server will make auth requests of the Domain Controller. Ensure that you have at least a primary and backup Domain Controller, that the NTDS.dit disk drives are big enough to handle the creation of a large number of new AD DS objects (mobile users and groups), and that your servers have enough RAM to cache all those objects in memory.

Database Schema

  • Ensure your schema is sufficiently de-normalized so that you never have to perform more than a 4-way JOIN across tables. This affects server-side JOIN filters as well as SSCE performance.
  • To ensure uniqueness across all nodes participating in the sync infrastructure, use GUIDs for your primary keys so that SQL Server doesn’t have to deal with the overhead of managing Identity ranges. Make sure to mark your GUIDs as ROWGUIDCOL for that table so that Merge won’t try to add an additional Uniqueidentifier column to the table.  Don’t create clustered indexes when using GUIDs as primary keys because they will suffer horrible fragmentation that will rapidly degrade performance.  Just use a normal index.
  • Create clustered indexes for your primary keys when using Indentity columns, Datetime, or other natural keys.  Ensure that every column in every table that participates in a WHERE clause is indexed.


  • If your network connection is fast and reliable like Wi-Fi or Ethernet, your SSCE client has more than 32 MB of free RAM, and SQL Server isn’t experiencing any deadlocks due to contention with ETL operations or too many concurrent Merge Agents, create a new Merge Agent Profile based on the High Volume Server-to-Server Profile so that SQL Server will perform more work per round-trip and speed up your synchronizations.
  • If you’re using a 2G/3G Wireless Wide Area Network connection, create a Merge Agent Profile based on the Default Profile so that SQL Server will perform less work and use fewer threads per round-trip during synchronization than the High Volume Server to Server Profile which will help to reduce server locking contention and perform less work per round trip which will make your synchronizations more likely to succeed.
  • In order to prevent SQL Server from performing Metadata Cleanup every time a Subscriber synchronizes, set the –MetadataRetentionCleanup parameter to 0.
  • As SQL Server has to scale up to handle a higher number of concurrent users in the future, locking contention will increase due to more Merge Agents trying to perform work at the same time.  When this happens, adjust the parameters of the Default Profile so that both  –SrcThreads and –DestThreads are equal to 1.


  • When defining the Articles you’re going to sync, only check the minimum tables and columns needed by the Subscriber to successfully perform its work.
  • For Lookup/Reference tables that aren’t modified by the Subscriber, mark those as Download-only to prevent change-tracking metadata from being sent to the Subscriber.
  • Despite the fact the column-level tracking sends less data over the air, stick with row-level tracking so SQL Server won’t have to do as much work to track the changes.
  • Use the default conflict resolver where the “Server wins” unless you absolutely need a different manner of picking a winner during a conflict.
  • Use Static Filters to reduce the amount of server data going out to all Subscribers.
  • Make limited use of Parameterized Filters which are designed to reduce and further specify the subset of data going out to a particular Subscriber based on a HOST_NAME() which creates data partitions.  This powerful feature slows performance and reduces scalability with each additional filter, so it must be used sparingly.
  • Keep filter queries simple and don’t use IN clauses, sub-selects or any kind of circular logic.
  • Strive to always create “well-partitioned” Articles where all changes that are uploaded/downloaded are mapped to only the single partition ID for best performance and scalability.
    • When using Parameterized Filters, always create non-overlapping data partitions where each row from a filtered table only goes to a single Subscriber instead of more than one which will avoid the use of certain Merge metadata tables.
    • Each Article in this scenario can only be pubished to a single Publication
    • A Subscriber cannot insert rows that do not belong to its partition ID.
    • A Subscriber cannot update columns that are involved in filtering.
    • In a join filter hierarchy, a regular article cannot be the parent of a “well-partitioned” article.
    • The join filter in which a well-partitioned article is the child must have the join_unique_key set to a value of 1 which relates to the Unique key check box of the Add Join dialog.  This means there’s a one-to-one or one-to-many relationship with the foreign key.
    • Each “well-partitioned” Article can have only one subset or join filter. The article can have a subset filter and be the parent of a join filter, but cannot have a subset filter and be the child of a join filter.
  • Never extend a filter out to more than 4 joined tables.
  • Do not filter tables that are primarily lookup/reference tables, small tables, and tables with data that does not change.
  • Schedule the Snapshot Agent to run once per day to create an unfiltered schema Snapshot.
  • Set your Subscriptions to expire as soon as possible to keep the amount change-tracking metadata SQL Server has to manage to an absolute minimum. Normally, set the value to 2 to accommodate 3-day weekends since 24 hours are automatically added to the time to account for multiple time zones. If server-side change tracking isn’t needed and Subscribers are pulling down a new database every day and aren’t uploading data, then set the expiration value to 1.
  • Set Allow parameterized filters equal to True.
  • Set Validate Subscribers equal to HOST_NAME().
  • Set Precompute partitions equal to True to allow SQL Server to optimize synchronization by computing in advance which data rows belong in which partitions.
  • Set Optimize synchronization equal to False if Precompute partitions is equal to True.  Otherwise set it to True to optimize filtered Subscriptions by storing more metadata at the Publisher.
  • Set Limit concurrent processes equal to True.
  • Set Maximum concurrent processes equal to the number of SQL Server processor cores.  If exceesive locking contention occurs, reduce the number of concurrent processes until the problem is fixed.
  • Set Replicate schema changes equal to True.
  • Check Automatically define a partition and generate a snapshot if needed when a new Subscriber tries to synchronize. This will reduce Initialization times since SQL Server creates and applies snapshots using the fast BCP utility instead of a series of slower SELECT and INSERT statements.
  • Add data partitions based on unique HOST_NAMEs and schedule the Snapshot Agent to create those filtered Snapshots nightly or on the weekend so they’ll be built using the fast BCP utility and waiting for new Subscribers to download in the morning.
  • Ensure that SQL Server has 1 processor core and 2 GB of RAM for every 100 concurrent Subscribers utilizing bi-directional sync. Add 1 core and 2 GB of RAM server for every additional 100 concurrent Subscribers you want to add to the system.  Never add more Subscribers and/or IIS servers without also adding new cores and RAM to the Publisher.
  • Turn off Hyperthreading in the BIOS of the SQL Server as it has been known to degrade SQL Server performance.
  • Do not add your own user-defined triggers to tables on a Published database since Merge places 3 triggers on each table already.
  • Add one or more Filegroups to your database to contain multiple, secondary database files spread out across many physical disks.
  • Limit use of large object types such as text, ntext, image, varchar(max), nvarchar(max) or varbinary(max) as they require a significant memory allocation and will negatively impact performance.
  • Set SQL Servers’s minimum and maximum memory usage to within 2 GB of total system memory so it doesn’t have to allocate more memory on-demand.
  • Always use SQL Server 2008 R2 and Windows Server 2008 R2 since they work better together because they take advantage of the next generation networking stack which dramatically increases network throughput. They can also scale up as high as 256 cores.
  • Due to how Merge Replication tracks changes with triggers, Merge Agents, and tracking tables, it will create locking contention withDML/ ETL operations.  This contention degrades server performance which negatively impacts sync times with devices.  This contention should be mitgated by performing large INSERT/UPDATE/DELETE DML/ETL operations during a nightly maintenance window when Subscribers aren’t synchronizing.
  • Since Published databases result in slower DML/ETL operations, perform changes in bulk by using XML Stored Procedures to boost performance.
  • To improve the performance of pre-computed partitions when DML/ETL operations result in lots of data changes, ensure that changes to a Parent table in a join filter are made before corresponding changes in the child tables.  This means that when DML/ETL operations are pushing new data into SQL Server, they must add master data to the parent filter table first, and then add detail data to all the related child tables second, in order for that data to be pre-computed and optimized for sync.
  • Create filter partitions based on things that don’t change every day.  Partitions that are added and deleted from SQL Server and Subscribers that move from one partition to another is very disruptive to the performance of Merge Replication.
  • Always perform initializations and re-initializations over Wi-Fi or Ethernet when the device is docked because this is the slowest operation where the entire database must be downloaded instead of just deltas.  To determine rough estimates for initialization, multiply the size of the resulting SSCE .sdf file x the bandwidth speed available to the device.  A file copy over the expected network will also yield estimates for mininum sync times.  These times don’t include the work SQL Server and IIS must perform to provide the data or data INSERT times on SSCE.
  • If your SQL Server Publisher hits a saturation point with too many concurrent mobile Subscribers, you can scale it out creating a Server/Push Republishing hierarchy. Put the primary SQL Server Publisher at the top of the pyramid and have two or more SQL Servers subscribe to it. These can be unfiltered Subscriptions where all SQL Servers get the same data or the Subscribers can filter their data feeds by region for example. Then have the Subscribing SQL Servers Publish their Subscription for consumption by mobile SSCE clients.
  • Create just a single Publication.

Internet Information Services

  • Use the x64 version of the SQL Server Compact 3.5 SP2 Server Tools with Windows Server 2008 R2 running inside IIS 7.5.
  • Use a single Server Agent in a single Virtual Directory.
  • Ensure the IIS Virtual Directory where the Server Agent resides is on a fast solid-state drive that’s separate from the disk where Windows Server is installed to better support file I/O.
  • Use a low-end server with 2 processor cores and 2 GB of RAM to support 400 concurrent Subscribers queued at the same time.
  • Set the MAX_THREADS_PER_POOL Server Agent registry key equal to 2 to match the IIS processor cores and RAM. Do not set this value to a higher number than the number of cores.
  • Set the MAX_PENDING_REQUEST Server Agent registry key equal to 400 which means the Server Agent will queue up to 400 concurrent Subscribers waiting for one of the 2 worker threads to become available to sync with SQL Server.
  • Set the IIS Connection Limits property to 400 to prevent an unlimited number of connections reaching the Server Agent.
  • Add a new load-balanced IIS server for every additional 400 concurrent Subscribers you want to add to the system.


  • Use the appropriate x64, x86 or ARM version of SQL Server Compact 3.5 SP2 to take advantage of the PostSyncCleanup property of the SqlCeReplication object that can reduce the time it takes to perform an initial synchronization. Set the PostSyncCleanup property equal to 3 where neither UpdateStats nor CleanByRetention are performed.
  • Increase the Max Buffer Size connection string parameter to 1024 on a phone and 4096 on a PC to boost both replication and SQL query processing performance. If you have more RAM available, set those values even higher until you reach the law of diminishing returns.
  • Keep your SSCE database compact and fast by setting the Autoshrink Threshold connection string parameter to 10 so it starts reclaiming empty data pages once the database has become 10% fragmented.
  • Replication performance testing must be performed using actual PDAs to observe how available RAM, storage space and CPU speed affect moving data into the device’s memory area and how quickly this data is inserted into the SSCE database tables.  Since the SSCE database doubles in size during replication, the device must have enough storage available or the operation will fail.  Having plenty of available RAM is important so that SSCE can utilize its memory buffer to complete a Merge Replication operation more quickly.  With plenty of available RAM and storage, a fast CPU will make all operations faster.
  • The PDA must have at least an extra 32 MB of available free RAM that can be used by the .NET Compact Framework (NETCF) application.  If additional applications are running on the device at the same time, even more RAM is needed.  If a NETCF application has insufficient RAM is will discard its compiled code and run in interpreted mode which will slow the application down.  If the NETCF app is still under memory pressure after discarding compiled code, Windows Mobile will first tell the application to return free memory to the operating system and then will terminate the app if needed.
  • Set the CompressionLevel property of the SqlCeReplication object to 0 for fast connections and increment it from 1 to 6 on slower connections like GPRS to increase speed and reduce bandwidth consumption.
  • Tune the ConnectionRetryTimeout, ConnectTimeout, ReceiveTimeout and SendTimeout properties of the SqlCeReplication object based on expected bandwidth speeds:
Property High Bandwidth Medium Bandwidth Low Bandwidth
ConnectionRetryTimeout 30 60 120
ConnectTimeout 3000 6000 12000
ReceiveTimeout 1000 3000 6000
SendTimeout 1000 3000 6000
  • You can decrease potentially slow SSCE file I/O by adjusting the Flush Interval connection string parameter to write committed transactions to disk less often than the default of every 10 seconds.  Test longer intervals between flushes like 20 or 30 seconds. Keep in mind that these transactions can be lost if the disk or system fails before flushing occurs so be careful.
  • When replicating data that has been captured in the field by the device, perform Upload-only syncs to shorten the duration.


  • Use a Fibre Channel SAN with 15k RPM or solid-state disks for best I/O performance.
  • Databases should reside on a RAID 10, unshared LUN comprised of at least 6 disks.
  • Database logs should reside on a RAID 10, unshared LUN comprised of at least 6 disks.
  • Tempdb should reside on a RAID 10, unshared LUN comprised of at least 6 disks.
  • The Tempdb log should reside on a RAID 10, unshared LUN comprised of at least 6 disks.
  • The Snapshot share should reside on a RAID 10, unshared LUN comprised of at least 6 disks.  This disk array should be large enough to accommodate a growing number of filtered Snapshots. Snapshot folders for Subscribers that no longer use the system must be manually deleted.
  • Merge Replication metadata tables should reside on a RAID 10, unshared LUN comprised of at least 6 disks.
  • Increase your Host Bus Adapter (HBA) queue depths to 64.
  • Your Publication database should be broken up into half the number of files as the SQL Server has processor cores. Each file must be the same size.
  • Tempdb should be pre-sized with an auto-growth increment of 10%. It should be broken up into the same number of files as the SQL Server has processor cores. Each file must be the same size.

High Availability

  • Load-balance the IIS servers to scale them out. Enable Server Affinity (stickiness) since the Replication Session Control Blocks that transmit data between the Server Agent and SSCE are stateful. Test to ensure that your load-balancer is actually sending equal amounts of Subscriber sync traffic to each IIS server.  Some load-balancers can erroneously send all traffic to a single IIS server if not properly configured.
  • Implement Windows Clustering so that SQL Server can failover to a second node.
  • Using SQL Server Mirroring so that your Published database will failover to a standby server.
  • Make a second SQL Server into an unfiltered Subscriber to your Publisher so that it can take over Merge Replication duties for mobile clients as a Republisher if the primary SQL Server fails. SSCE clients would just have to reinitialize their Subscriptions to begin synchronizing with the new Republisher.

Ongoing Maintenance

  • Use the Replication Monitor to have a real-time view of the synchronization performance of all your Subscribers.
  • Use the web-based SQL Server Compact Server Agent Statistics and Diagnostics tools to monitor the health and activity of the Server Agent running on IIS.
  • Create a SQL Job to execute the sp_MSmakegeneration stored procedure after large DML operations. Regular execution after INSERTING/UPDATING/DELETING data from either DML/ETL operations or after receiving lots of changes from Subscribers will maintain subsequent sync performance. Executing this stored procedure from the server-side is preferable to having it executed as a result of a Subscriber sync which would block all other Subscribers.
  • During your nightly maintenance window, rebuild the indexes and update the statistics of the following Merge Replication metadata tables:
    • MSmerge_contents
    • MSmerge_tombstone
    • MSmerge_genhistory
    • MSmerge_current_partition_mappings
    • MSmerge_past_partition_mappings
    • MSmerge_generation_partition_mappings
  • If you notice performance degradation during the day due to a large number of Subscribers making large changes to the database, you can updates the statistics (with fullscan) of the Merge Replication metadata tables more frequently throughout the day to force stored proc recompiles to get a better query plan.
    • UPDATE STATISTICS MSmerge_generation_partition_mappings WITH FULLSCAN
  • Rebuild/defrag indexes on your database tables and Merge Replication metadata tables throughout the day to reduce locking contention and maintain performance.
  • Use the Missing Indexes feature of SQL Server to tell you which indexes you could add that would give your system a performance boost. Do not add recommended indexes to Merge system tables.
  • Use the Database Engine Tuning Advisor to give you comprehensive performance tuning recommendations that cover every aspect of SQL Server.
  • Monitor the performance of the following counters:
    • Processor Object: % Processor Time: This counter represents the percentage of processor utilization. A value over 80% is a CPU bottleneck.
    • System Object: Processor Queue Length: This counter represents the number of threads that are delayed in the processor Ready Queue and waiting to be scheduled for execution. A value over 2 is bottleneck and shows that there is more work available than the processor can handle. Remember to divide the value by the number of processor cores on your server.
    • Memory Object: Available Mbytes: This counter represents the amount of physical memory available for allocation to a process or for system use. Values below 10% of total system RAM indicate that you need to add additional RAM to your server.
    • PhysicalDisk Object: % Disk Time: This counter represents the percentage of time that the selected disk is busy responding to read or write requests. A value greater than 50% is an I/O bottleneck.
    • PhysicalDisk Object: Average Disk Queue Length: This counter represents the average number of read/write requests that are queued on a given physical disk. If your disk queue length is greater than 2, you’ve got an I/O bottleneck with too many read/write operations waiting to be performed.
    • PhysicalDisk Object: Average Disk Seconds/Read and Disk Seconds/Write: These counters represent the average time in seconds of a read or write of data to and from a disk. A value of less than 10 ms is what you’re shooting for in terms of best performance. You can get by with subpar values between 10 – 20 ms but anything above that is considered slow. Times above 50 ms represent a very serious I/O bottleneck.
    • PhysicalDisk Object: Average Disk Reads/Second and Disk Writes/Second: These counters represent the rate of read and write operations against a given disk. You need to ensure that these values stay below 85% of a disk’s capacity by adding disks or reducing the load from SQL Server. Disk access times will increase exponentially when you get beyond 85% capacity.
  • A limited number of database schema changes can be made and synchronized down to SSCE Subscribers without any code changes which makes it easier to update your system as it evolves over time.
  • Use a Merge Replication Test Harness to stress test the entire system.  The ability to simulate hundreds or thousands of concurrent synchronizing Subscribers allows you to monitor performance and the load on the system.  This is helpful in properly configuring and tuning SQL Server, IIS, and the Windows Mobile devices.  It will tell you where you’re having problems and it will let you predict how much server hardware you will need to support growing numbers of Subscribers over time.  It’s also very important to simulate worst-case scenarios that you never expect to happen.

I hope this information sufficiently empowers you to take on the largest MEAP solutions that involve SQL Server Merge Replication and SQL Server Compact.  If you need a deeper dive, go check out my book on Enterprise Data Synchronization http://www.amazon.com/Enterprise-Synchronization-Microsoft-Compact-Replication/dp/0979891213/ref=sr_1_1?ie=UTF8&s=books&qid=1271964573&sr=1-1 over at Amazon.  Now go build a fast and scalable solution for your company or your customers.

Best Regards,


P.S.  If your solution doesn’t require all the advanced features found in Merge Replication, I highly recommend you use Remote Data Access (RDA).  This is a much simpler sync technology that’s extremely fast, scalable, and easier to manage.

Sharing my knowledge and helping others never stops, so connect with me on my blog at http://robtiffany.com , follow me on Twitter at https://twitter.com/RobTiffany and on LinkedIn at https://www.linkedin.com/in/robtiffany

Sign Up for my Newsletter and get a FREE Chapter of “Mobile Strategies for Business!”

[mc4wp_form id=”5975″]