The High Court has ruled on a software development project that failed. A luxury car manufacturer (R) entered into an agreement with a supplier of digital twin engine software (T). 

A digital twin is a virtual model of a physical object - engineers create a computer model of it and software allows the visual model to be manipulated so that different configurations of the object can be seen. Here, the idea was that buyers would be able to see what customisation and upgrade options looked like.  The contract value was c.€9 million.

As is often the case, there were delays and delivery deadlines were postponed several times; there were also arguments about whether the project should be delivered using agile or waterfall methods. R sought to terminate the contract in April 2020 and T issued proceedings in September 2020, claiming damages for wrongful termination. 

T said that it was not in breach because it had achieved Technical Go-Live for some deliverables and would have achieved the other deadlines if R had not terminated the arrangement.  It also argued that in any event, that the delivery dates were not binding, time was not of the essence and R was partly responsible for the delays.  R counterclaimed, and said the dates were contractually binding..

The judge also considered the impact on T of changes to the project scope by R.  The court also ruled on whether storing confidential information in the cloud without consent could be repudiatory.


Originally, R tried to terminate the agreement at common law for failure to achieve milestone dates in the original project plan. However, this came after R had agreed a new project plan which had different milestone dates.  So, failure to comply with the original dates was not a repudiatory breach.

R then served a new notice terminating the agreement for failure to meet the revised dates. This notice was effective, because the new project plan was binding.  The contract' provided for time to be of the essence and R had accepted the new project plan because it believed that the revised dates would be achieved.

T argued that delays were caused by R making changes to the scope and because T had felt pressured into using a sub-contractor to win the business and it was the sub-contractor who had caused delays. The judge (unsurprisingly) rejected this and said that T should have used the change control process in the contract to deal with the scope creep. In addition, it was a commercial decision to use a subcontractor and, once T had decided to use that particular sub-contractor, T was (of course) responsible for them.

Use of the cloud and use of sub-contractors

R argued that hosting confidential information in the public cloud and using subcontractors without permission also justified termination. The judge decided that those breaches were not repudiatory. She accepted that AWS cloud infrastructure was not inherently insecure and did not pose additional risk to storing data on-site. Using subcontractors without consent did not affect the progress of the project.


The contract contained limitation of liability provisions capping each party's liability to £5 million. T argued that the money owed to it should be deducted from its liability to R after the cap had been applied. However, the liability cap applied to the total liability of either party to the other "in aggregate for all claims".  This meant that the court had to calculate the balance of sums due before the cap was applied. 

The court concluded that:

  • T was obliged to deliver the software in accordance with the revised plan, which was contractually binding and made time of the essence in respect of the (revised) dates that had been agreed;
  • T failed to comply with the revised plan and had failed to achieve Technical Go-Live in relation to various aspects by the milestone dates.
  • T was not impeded in its performance by R.
  • R was entitled to terminate both under the agreement and at common law due to T's repudiatory or anticipatory breach
  • R entitled to damages in the sum of €5 million plus interest.

So what can we learn from this decision?

  • Ensure project timelines and milestones are clearly set out.
  • Agree project methodology before you start a project.
  • Draft and use a change control mechanism, especially vendors where there is scope creep.
  • If time is of the essence, make sure you say that in the contract, and vendors should include adequate relief events.
  • Breach of a contractual term needs to be significant to warrant termination.
  • Vendors should think carefully about the basis on which they use sub-contractors and how they they can back off (or otherwise get comfortable with) liability.
  • Take care not to be in repudiatory breach yourself if you are thinking about exiting an agreement!