Many businesses own a piece of software they commissioned for their own needs and have run for years. Over time it becomes clear that other companies face the same problem and would like to use it too. Two questions follow: will the software work at another company, and is there a revenue model in this? The answer is usually yes — but the road is longer than it looks.
Because software written for a single client is full of that client's assumptions. The tax rate is hard-coded, the workflow is built around that company's approval chain, product codes follow its own scheme, the reports are laid out the way its owner wanted them. None of this is a mistake; as project decisions they were the right ones. As a product, each one is an obstacle. Productisation is the work of picking out these assumptions one by one and making them configurable.
The second and more critical issue is data isolation. In a system where more than one client runs side by side, keeping one client's data invisible to another cannot be left to chance. This is not a matter of a filter in the interface; it has to be solved at the foundation of the architecture. Isolation layers bolted on afterwards are among the most dangerous and most expensive fixes, which is why we address this the moment the productisation decision is made.
There is a legal side to settle before this work begins, and we discuss it in the first meeting: the source code and intellectual property clauses in the existing transfer agreement. If the software was built for one client, whether it can be sold to other clients depends on what that contract says. Starting the technical work before this clause is clarified opens a road that is very expensive to stop later. The same applies to companies that want to productise their own internal software; there too, the contract with the developer must be checked.