Monday, February 9, 2009

SaaS Customer Life cycle - New Release

This is part of a series of posts focused on the life cycle of a SaaS customer. The first post is here, and the previous post about going live here.

So at this point client is up and running, let's assume they are wildly successful and the relationship is going well. As the account management team (or whatever language your organization uses to describe this function) has been focused on sharing best practices and hitting all metrics the product team has been busily hammering out the latest version of the product.

Product Management and Product Development are discrete functions that are separate from managing implementations and relationships. This probably sounds like another obvious statement, but worth making. As tasks related to the core product require a different skill set than deploying and managing clients it is likely they are different teams within an organization. I am planning some future posts on both of these topics so I'll follow up on this thread later.

The challenges associated with pushing this latest version begin at the most seemingly innocuous place: What is this called? Is this an upgrade? Is this a migration? a push? some other word?

Upgrade and migration will typically trigger a whole host of associations for enterprise clients. Many of those associations are not pleasant ones, remember many enterprises are likely to still be involved with installed software. Think about the pain and costs associated with a migration or upgrade of some large installed software product, such as an ERP or HR system, especially if the system has been customized in any way (which is likely).

In addition to the possible negative associations words like upgrade and migration are likely to have, many enterprises are also likely to have a number of internal processes and procedures that are invoked once these terms enter the conversation. Some of the possible events that an upgrade or migration might trigger could include another round of UAT, additional security tests, and possibly having procurement getting involved if there are any costs associated. Ideally this issue will have been addressed during the sales cycle and also covered at the end of any implementation cycle, however it is pretty likely that the people involved in those cycles are either no longer attached to this project or have completely forgotten what was said during earlier phases.

All that being said there are three major aspects of all upgrades / migrations:

  • Client facing communication
  • Production migration for code, and I'll lump DB into this category
  • Production migration for infrastructure.


Each of these should be considered carefully with a detailed plan that is shared between all parts of the organization.

Client facing communication is seemingly straight forward, but the decision to communicate at all to clients is one that will likely come up internally, especially If many / most / all of the product changes are focused on items that clients would never know about (say security upgrades, or changes to the way the application handles requests, or communicates between layers, etc).

In those instances it is theoretically possible that a client would never know. It could be tempting to simply perform these upgrades without any notification to clients. I would say this a mistake. Long term relationships with clients are built and trust and trust requires transparency. The possible downside of communicating to clients far outweighs the risks of not communicating. If something were to go wrong during the process that impacted uptime, or any other metric, you would then be forced to communicate to clients that something went wrong while upgrading. This would certainly not contribute to an atmosphere of trust and partnership.

Clearly any significant new release that would impact end users in any way must be communicated to all clients and are subject to all the same concerns.

The specifics of what exactly to include in client facing communications and the tone will vary from release to release. It is a bit of a tight rope act. The goal is to help clients understand what is coming, all the great new stuff that is included and how it makes their lives (and programs) more successful. This is the true power of SaaS. At the same time by making a release seem like too much of a big deal can generate concern and/or any of the issues mentioned previously. Most enterprise clients are risk averse by nature so that is important to keep in mind.

The communication should go out with plenty of time for clients to absorb and ask questions and have the majority of their fears / concerns addressed. If your release cycle is once a quarter client facing communication is one of the things that could be a challenge.

The specifics of a release will need to be locked down and guaranteed to be included if they are to be communicated to clients. In many cases this may not be known until all coding and internal QA has been completed. If clients need time to absorb release information then an organization needs to set some specific internal policies around completed QA. For example if it is determined that clients need 2 weeks to absorb release information and ask questions and internal teams need one week to draft and finalize client facing communications that means the product team should have a milestone that says 3 weeks prior to live all features should be through QA and a determination as to the status (in or out for this release) needs to be made. This is a pretty tight schedule for a quarterly release timeline.

Production migration for code varies depending upon what stage of maturity of their SaaS offering. If there are multiple client instances running different code bases then that strategy would need to be different than singe instance of code for all clients. It seems most likely that most SaaS organizations are somewhere in between with multiple instances of clients running the same code base. Running through some test migrations in a development or QA environment should be considered a necessary milestone prior to any production changes. The product team would be well served by engaging with the implementation teams to determine what would be the best candidates for testing (which implementations are the simplest? Which are the most complex? Which have the largest user population, etc are all questions that can help find the right implementations for testing).

A cautionary note here: No matter how diligent any development team is about ensuring dev and/or QA mimics production as closely as possible there are likely differences. These can be seemingly small (say slightly different versions of an application server or lack of monitoring software) to large (say no clustering or load balancing in dev / QA). These differences, even the small ones, can lead to failure once code is moved to production.

Up to date and quality documentation of the production environment as well as dev and QA environment can help here, however it is rarely done. This kind of documentation is boring and dull. No one want to actually sit down and write this documentation, even fewer people are willing to keep it up to date. A good policy is to add a formal step to any production change procedure to update the production documentation. This at least increases the chance that production will be properly documented.

It is also important that all hands are on deck for production pushes. This should include the QA and dev team as well as the implementation teams and client services teams. Frequently the people who deal with specific client implementation on a daily basis are best positioned to know the most crucial things to check. Don't underestimate the value of those additional eyes and make sure there is a clear process for those people to report any issues they uncover as quickly as possible.

Production migration for infrastructure is related but slightly different than migrating code. A natural tendency is to try to link changes to infrastructure to an upgrade window for all the application code. I would argue this is a bad idea, unless the new infrastructure is tied to the new code specifically. This introduces another variable into the process that exponentially increases the effort required to troubleshoot any issues that might arise. Ideally an organizations standard contract will include some sort of monthly maintenance window. It would be best to confine infrastructure changes to those windows as much as possible.

So this post turned into a much longer one than I initially thought. I should have probably broken it up into two parts. There is clearly more to say about this specific stage of a SaaS customer life cycle and I will try to expand upon these ideas in future posts. If you are still reading then kudos to you.

Saturday, February 7, 2009

SaaS Customer Life cycle - Live

This is part of a series of posts focused on the life cycle of a SaaS customer. The first post is here, and the previous post about implementation is here.

At this point some measure of congratulations are in order, right? The customer has moved from a prospect to signed contract and through implementation. The client is live. This is a significant milestone.

An important factor is that all monthly recurring revenue can now begin billing. It also means that all implementation costs (assuming there are any) can be billed, this does not mean that all implementation costs can be recognized in the month the client goes live. According to current accounting principles for SaaS organizations all implementation costs must be spread out over the first year of the contract. This is a fairly important item to make note of, especially when working on revenue projections and budgets. While it doesn't really need to be said, I will say it anyway: The faster you can get a client launched and live the better for everyone.

Aside from the financial considerations of going live, there is another important issue to keep focused on at this milestone. The hard work of building a strong relationship with all clients (to ensure they continue to choose your organization as their vendor of choice in the future) begins. All enterprise organizations will require departments to provide a cost justification of all contracts, especially in these tough economic times.

As a means to that end it is important to have developed best practices (previous post on this topic here.) to ensure that clients are succeeding and growing. This should include metrics. Since clients are looking to SaaS vendors in large part for their domain expertise in addition to access to their products this means that SaaS vendors need to take an active role in setting metrics for clients.

Part of the role of a SaaS vendor is to not only help clients succeed, but to help clients prove that success internally. One thing that all enterprise organizations can understand are clear metrics to indicate that a specific contract is worth keeping and continuing in the future. Ideally these metrics include some hard numbers in addition to any soft numbers (items such as increased awareness, brand improvement, morale boost, etc). Ideally all metrics that can be generated from within an organization's solution will be calculated and delivered directly to clients in some automated fashion. Monthly is the most common time period for these sorts of metric reports.

The less work any given client administrator or internal champion at the client has to do in order to put together a solid business case for your contract the better off you will be. This is not because anyone at a client is lazy, but more likely they are tasked with a number of other responsibilities. The more you can make program administrators and other champions within your client's organization look like a rock star, the better for everyone.

While going live is certainly something to celebrate, it should be looked at as the start of some more hard work.

Thursday, February 5, 2009

SaaS Customer Life cycle - Implementation

This is part of a series of posts focused on the life cycle of a SaaS customer. The first post is here, and the previous post about contracts here.

This post will focus on implementation. I won't delve into methodology this pass ( I have covered this in more detail here. It doesn't matter whether you have a 2 hour implementation or a 6 month implementation is dependent on a number of factors:

  • The simplicity of the business problem being solved
  • The maturity of the solution
  • The input / decisions required by clients.
  • Expectations of product that have been misunderstood during the sales cycle.

Nothing earth shattering or particularly revealing on that list, but I want to spend a couple of moments to go a bit deeper into each of those items.

The simplicity of the business problem being solved will impact the length of your deployment time. Note I did not say the simplicity of your solution. You may have a complex solution to a simple problem, however hopefully that complexity is all under the hood and doesn't need to be exposed to any implementation team. It is always easier to use examples, so for example if your software is geared to helping an enterprise simply track the number of hits to a specific page this is a fairly simple business problem. Now consider a suite of software that handles ERP. These two examples are vastly different in the scope of the problems they are solving. I would expect the implementation time for the ERP system to be significantly longer. As the trend is for software to become more and more feature laden it would stand to reason that software complexity will only continue to increase. This is not necessarily an encourage trend in terms of implementation times for SaaS solutions, however simplicity / complexity is not the only factor.

The maturity of any given product will impact deployment. In theory the more mature the product the more experienced the implementation teams and the more time the product and development teams have had to address any technology challenges related to implementations. There are some notable exceptions. As products mature they tend to add to the feature set, which again invokes the issues mentioned above. On the whole a more mature SaaS solution should be faster to implement than a less mature solution in the same space solving the same problems.

The input required by clients will most likely have the greatest impact on implementation times. As the focus of this blog is on the enterprise it needs to be acknowledged that many enterprise clients have a culture where people who make "bad" decisions are frequently punished. This leads to a culture where people are sometimes afraid of making decisions, or to a culture where there are multiple people are required to sign off any decisions. This is very likely to be the primary cause of delays in implementations. The best way to mitigate this challenge is to have the fewest number of client inputs as required and try to gather as much information as possible during the sales process.

The final item listed has the potential to be the biggest challenge to implementation. No matter how clear you think you are being during the sales cycle it is still possible that what a client hears isn't exactly what you meant (let's assume the best intentions for both the sales teams and the clients). When these sorts of mismatched expectations occur it will almost always require escalation to more senior resources on both sides. Once that has occurred it is highly likely that delays will occur but more importantly confidence will begin to erode. This is the most detrimental part for establishing a long term relationship. In a perfect world this would never happen, but alas sometimes it does. One strategy that seems to be effective at minimizing these sorts of issues is to have a member of the implementation team present at the appropriate point in the sales cycle. Ideally it would be the same implementation team member who will be responsible for that client's implementation. This helps avoid the he said she said that these kinds of miscommunications can sometimes turn into. Clearly if the implementation time for your solution is only a day it's less of an issue, but if it is longer it is worth considering integrating implementation with some part of the sales process.

While some or all of these may be factors in any given implementation process the faster an organization can implement their solution the better. This will allow you to get to the all important revenue recognition as soon as possible.