Termination of Software Development Contracts - Amanah Raya Berhad v Mesiniaga Berhad [2024] 3 AMR 258

Overview

Software development contracts are contracts entered between software developers and their customers for the purpose of developing software products, including the implementation, integration and upgrade of business software. These software development contracts are now becoming commonplace as businesses seek to adopt and improve on their digital technologies and media applications.

Contracts for the development of software typically include terms and conditions which govern the functional specification of the software, customisation and parameterisation, project completion deadline, milestones for each stage of the project development, software testing requirements, roll-out and post go-live support. Other terms provided in software development contracts might include provisions for liquidated ascertained damages, events of default and termination clauses.

Although some of the clauses in a software development contract may be regarded as standard contract terms, parties ought to be mindful of their respective obligations arising from such terms.

In Amanah Raya Berhad v Mesiniaga Berhad [2024] 3 AMR 258 (“ARB v Mesiniaga”), we represented the software developer (the “Defendant”) in its defence and counterclaim against a suit commenced by its customer (the “Plaintiff”) for an alleged breach of contract for the supply, delivery, installation, development, testing, commissioning, training, and maintenance of an integrated business software (“Integrated System”).

Summary of Facts

The Defendant was approached by the Plaintiff to submit its proposal for the development of the Integrated System, in order to integrate the Plaintiff’s existing business systems into a single optimised system for improved efficiency.

By a letter of award dated 26 December 2013, the Plaintiff engaged the Defendant for the development of the Integrated System (“LOA”). Notably, the LOA provided that the contract period for delivery of the Integrated System shall be 12 months from the date of acceptance thereof by the Defendant.

Subsequently, the Plaintiff and Defendant executed a formal software development agreement (“said Agreement”) on 23 April 2015, which contained, inter alia, the following essential terms:

1) Under Clause 1.2(a), the Schedules to the said Agreement have effect and are construed as an integral part of the agreement and shall have priority and take precedence over the provisions contained in the agreement in the event of any conflict or discrepancy.

2) Clause 2.1 provides that the said Agreement was deemed to have commenced on 18 February 2014 and the contract period shall expire on 31 August 2015. Clauses 2.2 and 2.3 allowed either the Plaintiff or Defendant to make an application in writing for an extension of the contract period, subject to negotiations and agreement between the parties.

3) Clause 4.1 provides that the Defendant shall supply, deliver, install, develop, test and commission the Integrated System in accordance with Schedule 2.

4) According to Clause 9.1, the Defendant shall be entitled to 85% of the contract price upon implementation of the Integrated System and the remaining 15% payment after post Go-Live.

5) Under Clause 12.2, the Defendant was required to implement the Integrated System as specified in Schedule 2 in accordance with the timeline and stages provided in Schedule 3 of the said Agreement.

6) Clause 12.7 imposed liquidated ascertained damages on the Defendant for, amongst others, failing to meet the scope of work or timelines stipulated in Schedule 3 of the Agreement, or if the Defendant failed to remedy its defaults.

7) Clause 13 provided for change control procedures, whereby the Plaintiff could make Change Requests by way of notice in writing to amend or make changes to the Integrated System or incorporate additional features resulting in the extension of the completion timeline. The Defendant was to investigate the time and costs required for implementation of the Change Request and provide the Plaintiff with the Change Request Quotation thereafter.

8) Clause 18 provided for events of default and termination procedures for default by the Plaintiff or the Defendant. If any event of default occurs, the Plaintiff shall give notice in writing to the Defendant specifying the default and requiring the Defendant to remedy the same within 30 days from the date of receipt of the notice of default.

9) Schedule 2 of the said Agreement sets out the following particulars regarding the stages of implementation of the Integrated System being

a. Stage 1 – Operating Model & Requirement Definition

b. Stage 2 – Development, System Integration and Unit Testing

c. Stage 2a – Data Migration & Cleansing

d. Stage 3 – System Integration Testing (“SIT”) and User Acceptance Testing (“UAT”)

e. Stage 4 – Knowledge Transfer

f. Stage 5 – Rollout & Environment

g. Stage 6 – Post Go Live Support

Pertinently, the responsibility for data migration at Stage 2a lies with the Plaintiff to ensure that all existing data is migrated from its existing business system and cleansed before Stage 3 – Testing.

Under Stage 3 – Testing, it is provided that the ‘exit criteria’ for SIT and UAT were no Critical Defects, maximum of 5 High Defects, 15 Medium Defects and unlimited Low Defects. Hence, the Integrated System would have passed its SIT and UAT if the said ‘exit criteria’ is satisfied.

10) Schedule 3 of the said Agreement stipulates that, inter alia, the Integrated System was to Go-Live by July 2015 and the Defendant shall be required to provide maintenance services post Go-Live until the end of November 2015.

Throughout the project meetings between the Plaintiff and Defendant, various changes / amendments were made to the functional specification documents (“FSDs”) for parameterisation of the Integrated System, in order to customize its functional requirements as desired by the Plaintiff.

Once the FSDs were signed off by the Plaintiff, work commenced on the development and unit-testing of each component of the Integrated System (Stage 2) as provided by Schedule 2 of the said Agreement.

In tandem with the development and unit testing (Stage 2), the Plaintiff was responsible for performing the data migration from their existing business system over to the new Integrated System and to cleanse the migrated data, i.e. the data migration stage (Stage 2a).

These migrated data would have been crucial for System-Integration-Testing (SIT) and User-Acceptance-Testing (UAT) by the Defendant, in order for parties to identify any bugs in the new system. However up to the date when the said Agreement was terminated, the Plaintiff did not fulfil its obligation to complete data migration under Stage 2a.

Notwithstanding the delays in data migration due to the Plaintiff, the Defendant proceeded to conduct SIT for the Integrated System on two separate occasions between 20 April 2015 and 3 July 2015. However, at the project committee meeting on 19 June 2015, the Defendant informed the Plaintiff that it was not possible for the Integrated System to Go-Live by July 2015, and thus the deadline for completion on 31 August 2015 could not be achieved. To this end, the Plaintiff vide its managing director stated that an extension of time for the Integrated System to Go-Live by October 2015 “was possible”.

Later at the project committee meeting on 24 June 2015, both parties agreed that the Defendant would provide the Plaintiff with options for an extension of time for the Integrated System to Go-Live. By an email on 5 July 2015, the Defendant had forwarded the said options for extension of time to the Plaintiff.

On 14 July 2015, the Plaintiff issued a notice of default to the Defendant pursuant to Clause 18 of the said Agreement alleging that the SIT results showed 229 default issues and put the Defendant to notice to rectify the said defaults within 30 days.

By its letters dated 29 July 2015 and 25 August 2015, the Defendant replied to the Plaintiff that out of the purported 229 default issues, there were only 48 bugs which have been either closed or fixed, and the remainder of the purported issues were in fact Change Requests or new features not included in the FSDs by the Plaintiff.

On 1 September 2015, the Plaintiff notified the Defendant that the said Agreement had expired and demanded the Defendant to cease work on the Integrated Software.

On 27 February 2017, the Plaintiff commenced its suit against the Defendant for, inter alia, failing to complete the said Agreement before the expiry date of the said Agreement on 31 August 2015 and claimed for its loss and damages arising due to wasted expenditure.

The Defendant responded by filing its defence and counterclaim against the Plaintiff, wherein the Defendant denied any breach of the said Agreement and counter-claimed for the balance purchase price under the said Agreement.

High Court Decision

After 20 non-consecutive days of trial with a total of 10 witnesses (including one expert each from the Plaintiff and Defendant), the High Court judge held in favour of the Defendant and allowed the Defendant’s counterclaim in part, for the sum of RM6,638,396.30 with costs of RM200,000.00.

Essentially, the learned High Court judge accepted the expert report and testimony of the Defendant’s appointed expert which showed that out of the purported 229 default issues with the Integrated System in July 2015, there were only 48 bugs which have either been fixed or closed by the Defendant.

Hence, the actual defects reported by the Plaintiff were indeed rectified by the Defendant within the timelines stipulated by Clause 18 of the said Agreement.

Nonetheless, the learned High Court judge opined that the Defendant had indeed failed to deliver the Integrated System within the timeline stipulated in Schedule 3 of the said Agreement, despite the Defendant’s contention that delays in the delivery was caused by the Plaintiff’s breach of its obligation to complete the data migration prior to commencement of SIT and UAT in Stage 3 of Schedule 3.

Furthermore, the learned High Court judge opined that since there was no application for extension of time made in writing as required by the provisions of the said Agreement, there had not been any extension of time for delivery of the Integrated System until October 2015, despite assurances given by the Plaintiff’s managing director at the project committee meeting on 19 June 2015.

As such, the learned High Court judge held that the Defendant had breached the timeline for completion of the Integrated System by July 2015, according to Schedule 3 of the said Agreement.

On the other hand, the learned High Court judge held that the Plaintiff was not entitled to terminate the said Agreement by issuing its said letter dated 1 September 2015, since there was no right for recission of the said Agreement when there had not been total failure of consideration by the Defendant delivering the Integrated System.

The High Court took cognizance of the authority of the Federal Court in Berjaya Times Square Sdn Bhd v M-Concept Sdn Bhd [2010] 1 CLJ 269 (“Berjaya Times Square”) which held that, absent a total failure of consideration, the common law right by the innocent party to rescind the contract does not exist. The test established for ‘total failure of consideration’ in Berjaya Times Square (supra) was whether the party in default had failed to perform his promise in its entirety.

Since the Integrated System was indeed of merchantable quality and the Defendant fixed / closed all the bugs as reported by the Plaintiff, the learned High Court judge held that there was no total failure of consideration which entitled the Plaintiff exercise its right to rescind the said Agreement.

Furthermore, the learned High Court judge found that although Clause 2.1 stated that the said Agreement expires on 31 August 2015, Schedule 3 stipulated that the Defendant was obligated to provide post Go-Live support services until the end of November 2015. In the upshot, the learned High Court judge concluded that the said Agreement did not end on 31 August 2015 as contended by the Plaintiff.

The learned High Court judge also commented obiter that if the Plaintiff had given the appropriate notice in writing to the Defendant, the Plaintiff might have been entitled to claim for liquidated damages for late delivery of the Integrated System pursuant to Clause 12.7 of the said Agreement, as remedy for late delivery by the Defendant.

Therefore, the learned High Court judge held that the said Agreement did not in fact expire on 31 August 2015 since the Defendant was still obligated to maintain and perform its services post Go-Live until the end of November 2015, and thus the Plaintiff was not entitled to rescind the said Agreement.

In this regard, the Defendant was entitled to the damages sought in its counter-claim against the Plaintiff due to the Plaintiff’s wrongful repudiation of the said Agreement. Considering that the delivery of the Integrated System was only completed until the SIT under Stage 3 of Schedule 2 of the said Agreement, the learned High Court judge granted part of the Defendant’s loss and damages in the sum of RM6,638,396.30 for works performed.

Commentary

This is a classic case where it is shown the importance of clear and detailed contract terms and highlights the importance of “dotting the i's and crossing the t’s”1 when parties seek to terminate an agreement or contract.

As shown in ARB v Mesiniaga (supra), contracting parties must pay careful attention to ascertain their respective obligations under the schedules attached to any agreement, particularly when there are express provisions which stipulate that schedules would supersede the terms and conditions set out in the main body of the agreement. Care should be taken to ensure that provisions in the schedules are not in conflict with the terms of the agreement, in order to avoid uncertainty of the obligations imposed on the contracting parties.

In this instant case, the Plaintiff had conducted itself under the mistaken belief that the said Agreement had automatically expired on 31 August 2015 pursuant to Clause 2.1 therein, and thus prematurely issued its notice of expiry to the Defendant to terminate the said Agreement.

Furthermore, the case of ARB v Mesiniaga (supra) demonstrates that a party in default of its contractual obligations does not ipso facto allow the innocent party to exercise its common law right to rescind the said contract. Any termination of a contract by the innocent party ought to be undertaken in accordance with its express provisions, otherwise the innocent party might find itself having wrongfully repudiating the very contract which it seeks to terminate.

As a refresher for the general principles established in Berjaya Times Square (supra), the High Court held that the common law right of rescission only arises when there is total failure of consideration by the defaulting party.

The Plaintiff’s appeal to the Court of Appeal has since been withdrawn and there is no further appeal pending against the above decision.