My team has been discussing similar questions. We are frequently asked to provide custom extension or integration modules between our
products and our customers’ pre-existing hardware/software. The discussions go around and around and end up on the 4 topics that you
listed.
When a PS team does these customizations, it gives us as vendors a lot of power. The customer is dependent on some code that is limited in
support, maintenance, or upgrades. And this little bit of code generally also impacts a much larger software purchase and
relationship between us and our customer. Our product just got very sticky, and we’ve got the customer in a vulnerable position when it
comes to future incremental services.
At the risk of being philosophical, I find myself representing a pretty liberal opinion on some of these positions. These
customizations and extension requests usually represent a feature that the customer wishes the product had. When we provide these features
in a service offering, the customer returns to their normal business, and they’re happy with what they purchased - and they consider the
extensions we wrote as part of the product transaction! The subtle distinctions between the product part and the services part are
generally a source of confusion for the customer, so we should cleave as close as possible to the terms of the product-support agreement.
My recommendations:
- Ownership: This is the key part. If the customer CAN maintain the deliverable (if it’s a perl script, or some sort of wrapper), then
give them ownership. You’re off the hook for upgrades, support, etc. It’s their code now - of course, you’re prepared to sell them some
support, but they’re not beholden to you; they have another option. Conversely, if the customization is compiled code or is IP of the
crown-jewels level, then we have an obligation to provide some sort of mechanism for Warranty, Support, and Maintenance (and we’re suddenly
dragged in the product business...)
- Warranty, support, and compatibility: Picture yourself as the customer. How does your language read to them? Usually, we write
these so that it protects us. My team came to the compromise position similar to what you discussed. We provide 90 days as part of the SOW,
and we pre-negotiate a weekly rate (hopefully lower than standard), so they can invoke that clause and pay us on an ad-hoc basis. The big
benefit here is that all of the contracts are in place - when they need us, we’re executing, not starting a contract negotiation. Make
sure you include your standard lead-time language and any associated
travel-expenses clauses.
- Communication: At the completion of the SOW, we have a closure meeting and covers in very pointed and explicit detail exactly what
parts of their purchase apply to the separate support arrangements. We also provide a copy of the deliverables to our support center so
the support folks can reference the already-communicated support boundaries, and the whole company is [hopefully] communicating the
same message. Important point: All calls go to the support center - the support center escalates to PS as appropriate. The support center
NEVER says “that’s not part of the support agreement; you have to call the PS team”. (this will happen unless you head it off)
I guess all of this early morning blather really boils down to a short list of concepts:
- first, try to get ownership onto the customer. Yes, you give up some IP, but you also release yourself from support obligations.
- be careful with this language and make sure that it’s equitable.
Avoid the urge to use this language to only protect yourself. If one of your providers gave you this language, would it build trust?
- we’re PS, so we our business model dictates that we charge for things like support, warranty, and upgrades. Pre-negotiate the rates,
T&Cs, and like matters. When you customer has their hair on fire, this frees you up to be more responsive.
- as always, clear and explicit expectations are key. We, the vendor, have to provide consistent messaging. We also have to over
communicate to the customer.
My 2c - as always, comments and disagreements encouraged!
Carl I.
|