ECLI:NL:GHAMS:2020:2016
Gerechtshof AMS — Uitspraak 


GERECHTSHOF AMSTERDAM
afdeling civiel recht en belastingrecht, team I
zaaknummer 				: 200.268.284/01
zaak- en rolnummer rechtbank Amsterdam	: C/13/647027 / HA ZA 18-430
arrest van de meervoudige burgerlijke kamer van 14 juli 2020
inzake
BLUE OCEAN HR SOFTWARE SOLUTIONS B.V.
,
gevestigd te Eindhoven,
appellante,
advocaat: mr. T.P. Huizinga te Eindhoven,
tegen
[X] SOFTWARE B.V.
,
gevestigd te [vestigingsplaats] ,
geïntimeerde,
advocaat: mr. A.J. Exterkate te 's-Hertogenbosch.
1
Het geding in hoger beroep
Partijen worden hierna Blue Ocean en [X] genoemd.
Blue Ocean is bij dagvaarding van 14 augustus 2019 in hoger beroep gekomen tegen een vonnis van de rechtbank Amsterdam van 15 mei 2019, onder bovenvermeld zaak- en rolnummer gewezen tussen [X] als eiseres in conventie, verweerster in reconventie en Blue Ocean als gedaagde in conventie, eiseres in reconventie.
Partijen hebben daarna de volgende stukken ingediend:
- memorie van grieven;
- memorie van antwoord.
Ten slotte is arrest gevraagd.
Blue Ocean heeft geconcludeerd dat het hof het bestreden vonnis zal vernietigen en alsnog de vordering van [X] zal afwijzen en die van Blue Ocean – uitvoerbaar bij voorraad – zal toewijzen, met veroordeling van [X] in de kosten van het geding in beide instanties.
[X] heeft geconcludeerd dat het hof het bestreden vonnis zal bekrachtigen, met veroordeling van Blue Ocean in de kosten van het geding in (naar het hof begrijpt) het hoger beroep, met rente.
Beide partijen hebben in hoger beroep bewijs van hun stellingen aangeboden.
2
Feiten
De rechtbank heeft in het bestreden vonnis onder 2.1-2.9 de feiten vastgesteld die zij tot uitgangspunt heeft genomen. Deze feiten zijn in hoger beroep niet in geschil en dienen ook het hof tot uitgangspunt. Samengevat en aangevuld met andere vaststaande feiten komen de feiten op het volgende neer.
2.1
Het handelsregister vermeldt als beschrijving van de activiteiten van [X] :
"De ontwikkeling van software, het verlenen van diensten en het geven van adviezen op ICT-gebied."
2.2
Het handelsregister vermeldt als beschrijving van de activiteiten van Blue Ocean:
"[H]et ontwikkelen en vermarkten van HR software oplossingen, HR portals, online assessments, vragenlijsten en enquêtes alsmede HR analytics software; het verzorgen van consultancy en trainingen."
[A] (hierna: [A] ) is de enige bestuurder van Blue Ocean. Blue Ocean is de enige aandeelhouder en bestuurder van ItsallaboutHR B.V. (hierna: ItsAllAbout). ItsAllAbout brengt software van Blue Ocean op de markt.
2.3
[X] en Blue Ocean zijn een samenwerking aangegaan, gericht op de ontwikkeling en exploitatie van een HR platform. [X] verzorgde de architectuur en de ontwikkeling van de applicatie. Blue Ocean was verantwoordelijk voor de verkoop, marketing, funding en
'end-costumer implementations'
en werd daarin zo nodig ondersteund door [X] .
2.4
Op 6 februari 2015 hebben [X] en Blue Ocean een overeenkomst gesloten, getiteld
Professional Service Agreement
(hierna: PSA). Hierin is Blue Ocean aangeduid als
Customer
. De PSA bevat verwijzingen naar een
Statement of Work
(SoW) en vermeldt onder meer:
"
1	Scope of services
1.1
Services
[X] agrees to perform and Customer agrees to pay for the services (the "Services"). The Services will be specified in the Statement of Work (...) which Statement of Work (...) will be attached and form an integral part of this PSA. (...)
(...)
2
Customers' duties and responsibilities
(...)
2.4
Inspection
While [X] shall exercise reasonable efforts to ensure that each deliverable as specified in the SoW does not contain any harmful code or instruction which may adversely affect Customers' data processing operation environment, Customer shall remain solely responsible to perform all reasonable acceptance tests of each deliverable.
3
Performance of the Services
(...)
3.4
Results
[X] shall, to the best of [X] ' ability, do its utmost to perform the Services with due care and where appropriate, in accordance with the agreements and procedures recorded in writing with Customer and specified in the SoW. All of [X] ' services shall be performed on the basis of a best efforts obligation, unless and insofar as [X] has expressly agreed a result in the applicable SoW and the result concerned has also been described with sufficient definiteness. Any agreement concerning a service level shall be expressly agreed in a SoW.
(...)
4
Warrants and acceptance
4.1
Due Care
Subject to section 8, [X] warrants that the Services shall be performed with due care, in a professional manner and where appropriate, in accordance with generally accepted standards of industry, as specified in the SoW.
4.2
Warrants
Subject to section 8, [X] warrants that the deliverables as specified in the SoW will function substantially in accordance with the agreed written specifications and the agreed written requirements of the deliverables. [X] does not warrant that software shall operate without interruption, errors or other defects or that all errors and other defects shall be corrected. [X] shall do its utmost to fix errors in software within the meaning of section 4.3.7 to the best of [X] ' ability within 30 days provided errors have been reported immediately in writing and in detail to [X] within the period agreed and specified in the SoW.
(...)
4.3
Software
4.3.1
If an acceptance test has been agreed, testing shall be executed as agreed in the SoW, after delivery or, if installation by [X] has been agreed in writing, after the installation is completed. The test period shall be indicated in the SoW. Customer shall not be allowed to use software for productive or operational purposes during the test period.
(...)
5
Fees and payments
(...)
5.4
Payment
(...) Any amount not paid within thirty (30) calendar days will be subject to payment of statutory trade interest. Customer shall further be responsible for all costs incurred by [X] in connection with any efforts to recover payments due from Customer, including without limitation, professional fees and legal costs.
(...)"
2.5
De in de PSA bedoelde
Statement of Work
is aan de PSA gehecht. In navolging van partijen zal het hof deze aanduiden als de
Master Statement of Work
. Hierin staat onder meer:
"
1	Scope of the activities
The work that will be carried out on behalf of customer can be described as follow;
1. [X] Software will be responsible for Overall Architecture, Application development, Application maintenance, Infrastructure management;"
2.6
In de periode januari 2015-oktober 2016 hebben [X] en Blue Ocean nadere afspraken vastgelegd in zeven documenten, alle getiteld
Statement of Work
. In alle zeven
Statements of Work
staat onder meer:
"
1.	Scope of the activities
(...)
 All other activities like acceptance testing/support (...) are not included in this SoW;
(...)
3.0
Details related to the activities
Following conditions and/or assumptions will be applicable during the execution of the activities;
(...)
Customer has enough resources to test and accept the solved issues
(...)
Costumer should be fully aware not fulfilling these conditions and/or assumptions could have effect at the overall efficiency of the activities executed.
(...)
5.0
Terms & Conditions
The standard terms and conditions which fully and exclusively apply for this SoW are as indicated below:
(...)
For this SoW the period of acceptance testing is 2 weeks.
(...)"
In de
Statement of Work VS 15-011
(ondertekend op 2 maart 2015), die betrekking heeft op
'Bol.com Personal Plan'
, staat onder meer:
"
1	Scope of the activities
The work that will be carried out on behalf of customer can be described as follow;
 The (...) application as currently available (...) will be enhanced with the functionality to (...).
This functionality will include:
o (...)
o Verifying the app with the new functionality in IE 10/11 and Chrome 39/40.
(...)."
2.7
Ter uitvoering van de PSA en de nadere afspraken heeft [X] modules ontwikkeld en opgeleverd aan Blue Ocean.
2.8
In september 2015 heeft ItsAllAbout door [X] ontwikkelde software in het kader van een pilot geleverd aan Wonen Limburg. De implementatie is niet goed verlopen.
2.9
Bij verschillende gelegenheden in de periode maart-mei 2017 heeft ItsAllAbout door [X] ontwikkelde software in het kader van een pilot geleverd aan de gemeente Rhenen. Deze implementatie is ook niet goed verlopen.
2.10
Bij e-mail van 23 juni 2017 heeft [X] een
'evaluation report testing by Gemeente Rhenen'
toegezonden (ook aangeduid als:
root case
-analyse, hierna: het evaluatierapport). Hierin worden vijf problemen besproken: 1.
password procedure issue
, 2.
translation issues
, 3.
supporting additional questions
, 4.
memory issues
en 5.
issues regarding Internet Explorer 11
. Het rapport wordt afgesloten met conclusies van [X] .
2.11
Op 31 augustus 2017 heeft ItsAllAbout een demonstratie gegeven bij de mogelijk geïnteresseerde afnemer CAK. Ook hierbij deden zich problemen voor met de gedemonstreerde software.
2.12
[X] heeft in de periode december 2014-september 2017 facturen aan Blue Ocean gestuurd voor verrichte diensten. Deze zijn tot een bedrag van € 44.924,21 onbetaald gebleven.
2.13
Bij brief van 5 september 2017 heeft [A] aan [X] bericht dat Blue Ocean [X] in gebreke stelt en dat Blue Ocean verlangt dat [X] de in de brief omschreven problemen binnen twaalf dagen oplost.
Bij brief van 15 september 2017 heeft [X] gereageerd, onder meer met de aankondiging dat [X] maatregelen zou treffen indien Blue Ocean niet uiterlijk op 30 september 2017 de openstaande facturen zou betalen.
Bij brief van 22 september 2017 aan [X] heeft een behandelaarster van rechtsbijstandsverzekeraar DAS namens Blue Ocean een omschrijving gegeven van de problemen met de applicatie en bericht dat Blue Ocean haar betalingsverplichtingen opschort en [X] in de gelegenheid stelt om het complete ItsAllAbout platform met alle bijbehorende modules en onderdelen binnen vijf dagen af te leveren.
Bij brieven van 27 september 2017 en 4 oktober 2017 heeft [X] hierop gereageerd. Onder meer heeft zij aangekondigd haar dienstlevering aan Blue Ocean te zullen staken op 6 oktober 2017. Dat heeft zij ook gedaan.
Een gemachtigde van [X] heeft incassobrieven gestuurd op 30 oktober 2017 en 8 november 2017.
2.14
[X] heeft een advocaat [NAAM]. Bij brief van 22 februari 2018 heeft deze namens [X] verklaard dat [X] alle overeenkomsten ontbindt die haar verbinden aan Blue Ocean. Ook is Blue Ocean in deze brief gesommeerd tot betaling.
3
Beoordeling
3.1
In dit geding heeft [X] gevorderd, verkort weergegeven:
- verklaring voor recht dat de overeenkomsten tussen partijen zijn ontbonden,
- verklaring voor recht dat Blue Ocean gehouden is de openstaande facturen te voldoen, met rente en kosten,
- betaling van € 44.924,21, met wettelijke handelsrente,
- betaling van de werkelijke incassokosten, tot 6 april 2018 begroot op € 4.232,50.
Blue Ocean heeft in reconventie gevorderd, verkort weergegeven:
- ontbinding van de overeenkomsten tussen partijen,
- betaling van € 155.059,84 als in totaal door haar aan [X] betaald,
- betaling van € 3.000,00 als door haar aan de gemeente Rhenen betaald, en
- verdere schadevergoeding, veroorzaakt door de ontbinding, op te maken bij staat.
3.2
De rechtbank heeft de vorderingen van [X] toegewezen en die van Blue Ocean afgewezen. Hiertegen komt Blue Ocean op met zeven grieven.
3.3
Grief 1 is ertegen gericht dat de rechtbank art. 4.1 van de PSA niet in het feitenoverzicht heeft opgenomen. Het hof heeft dat alsnog gedaan. De grief behoeft voor het overige geen bespreking.
3.4
Bij grief 2 gebruikt Blue Ocean het woord "garandeert" als vertaling van het woord
"warrants"
dat in art. 4.1 van de PSA wordt gebruikt. Zij betoogt dat uit het gebruik van dat woord in art. 4.1 van de PSA voortvloeit dat het aan [X] is om te bewijzen (i) dat zij aan haar inspanningsplicht heeft voldaan en (ii) dat het niet-functioneren van de applicatie een gevolg is van een gedraging van Blue Ocean.
3.5
Dit betoog wordt verworpen. Blue Ocean heeft terecht geen grief gericht tegen het oordeel van de rechtbank onder 4.1 dat sprake is van een inspanningsverbintenis. Ook art. 4.1 van de PSA bevat een inspanningsverbintenis. In art. 4.1 van de PSA staan na het woord
"warrants"
immers geen resultaten vermeld die bereikt moeten worden, maar maatstaven waaraan de inspanningen van [X] dienen te voldoen.
Blue Ocean heeft zich op opschorting en ontbinding beroepen wegens tekortkomingen aan de zijde van [X] . Het is dan aan Blue Ocean om feiten te stellen op grond waarvan tekortkomingen aan de zijde van [X] kunnen worden aangenomen, en om haar stellingen nader te motiveren in geval van gemotiveerde betwisting. Nu het om een inspanningsverbintenis gaat, is het aan Blue Ocean om te stellen en zo nodig te bewijzen dat [X] zich onvoldoende heeft ingespannen.
3.6
Blue Ocean heeft verder bij grief 2 aangevoerd dat [X] zeer deskundig is op het gebied van applicaties als de onderhavige en dat Blue Ocean allesbehalve een expert is op dat gebied.
De PSA en de daarop gebaseerde nadere overeenkomsten moeten worden uitgelegd aan de hand van de Haviltex-maatstaf. Bij die uitleg kan mede van belang zijn welke (mate van) deskundigheid partijen bezitten en wat zij in dat opzicht redelijkerwijs van elkaar mogen verwachten. In de stellingen van Blue Ocean ligt mogelijkerwijs de stelling besloten dat zij de deskundigheid mist die nodig is om de in paragraaf 2 van de PSA vermelde
'customer's duties and responsibilities'
naar behoren te kunnen uitvoeren. Maar in elk geval heeft zij niet gesteld dat (en op grond waarvan) [X] bij het aangaan van de PSA redelijkerwijs moest begrijpen dat Blue Ocean die deskundigheid mist. Haar enkele stelling dat [A]
HR consultant
is en niet kan programmeren, is daarvoor onvoldoende. Hierbij is van belang dat in het handelsregister de activiteiten van Blue Ocean staan omschreven als (onder meer) het ontwikkelen van diverse soorten software. In beginsel mocht [X] daarop afgaan. De bepalingen van de PSA moeten daarom worden uitgelegd op basis van de veronderstelling dat Blue Ocean de deskundigheid bezit die nodig is om de overeengekomen
'customer's duties and responsibilities'
naar behoren te kunnen uitvoeren.
3.7
De grieven 2 tot en met 5 stellen diverse problemen met de applicatie aan de orde. Het hof zal deze problemen afzonderlijk bespreken.
Verschil tussen design en gebruik
3.8
[X] heeft aangevoerd dat een deel van de problemen is te wijten aan het verschil tussen design en gebruik, bijvoorbeeld doordat een design ervan uitging dat de eindgebruikers maar eenmaal op een bepaalde link zouden klikken, maar de eindgebruikers in werkelijkheid herhaaldelijk op de link bleken te klikken. Tijdens de pilotfase ontstonden hierdoor problemen. Dat is ook te verwachten als eindgebruikers software voor de eerste keer gebruiken, aldus [X] .
De rechtbank heeft naar dit argument verwezen (in 4.2).
Bij grief 4 heeft Blue Ocean aangevoerd dat uit art. 1 sub 1 van de
Master Statement of Work
volgt dat het verschil tussen design en gebruik voor rekening van [X] komt en dat dit in het bijzonder geldt voor de eenvoudig voorzienbare gebeurtenis dat eindgebruikers herhaaldelijk op een link zullen klikken.
3.9
Dit betoog wordt verworpen. Uit de enkele omstandigheid dat [X] verantwoordelijk was voor het design, kan niet worden afgeleid dat zij is tekortgeschoten in de nakoming van haar inspanningsverbintenis, indien blijkt dat er verschillen zijn tussen het design en het gebruik door de eindgebruikers. Evenmin kan uit de enkele omstandigheid dat [X] kennelijk niet had voorzien dat de eindgebruikers herhaaldelijk op de link zouden klikken, worden afgeleid dat [X] is tekortgeschoten in de nakoming van haar inspanningsverbintenis. Dit geldt temeer, nu het hof van oordeel is dat Blue Ocean ervoor verantwoordelijk is dat er geen deugdelijke acceptatietests zijn uitgevoerd voordat de applicatie werd gepresenteerd aan eindgebruikers (zie hierna onder 3.19-3.22).
Vertalingen
3.10
[X] heeft in het evaluatierapport geschreven dat zij vertalingen (van het Engels naar het Nederlands, zoals "onthoud me" op het aanmeldingsscherm) heeft gebruikt die Blue Ocean heeft aangeleverd en dat [X] zelf geen vertalingen heeft gemaakt en geen gebruik heeft gemaakt van
Google Translate
.
Bij grief 4 heeft Blue Ocean aangevoerd dat zijzelf geen onjuiste vertalingen heeft aangeleverd en dat [X]
Google Translate
heeft gebruikt.
3.11
Geen grief is gericht tegen de overweging van de rechtbank dat tussen partijen vast staat dat Blue Ocean verantwoordelijk was voor de vertalingen. Het hof zal daarvan dus uitgaan. Blue Ocean heeft niet specifiek aangeboden haar stellingen te bewijzen dat zijzelf uitsluitend juiste vertalingen heeft aangeleverd en dat de onjuiste vertalingen in de applicatie zijn terechtgekomen doordat [X]
Google Translate
heeft gebruikt. Die stellingen worden daarom gepasseerd. Ten overvloede overweegt het hof dat indien de onjuiste vertalingen in de applicatie zijn terechtgekomen doordat [X]
Google Translate
heeft gebruikt, die enkele omstandigheid nog niet meebrengt dat [X] is tekortgeschoten in de nakoming van haar inspanningsverbintenis. Bovendien kunnen ook vertaalfouten verbeterd worden naar aanleiding van acceptatietesten van voldoende omvang en diepgang.
Servers
3.12
[X] heeft aangevoerd dat zij Blue Ocean heeft geadviseerd om een
professional hosting party
in te schakelen. Tegen dat advies in heeft Blue Ocean bij de implementatie van de applicatie bij de klanten van ItsAllAbout gebruik gemaakt van de servers van [X] . Die zijn minder geschikt voor een dergelijk extern gebruik, aldus [X] .
De rechtbank heeft dit argument genoemd (onder 4.2).
Blue Ocean heeft bij grief 3 aangevoerd dat [X] heeft toegestaan dat Blue Ocean haar servers gebruikte en zonder voorbehoud heeft meegewerkt aan de pilots waarbij dat gebeurde. De informatie dat een
professional hosting party
moet worden ingeschakeld, bleek pas uit de brief van 15 september 2017, aldus Blue Ocean.
3.13
Blue Ocean heeft onbetwist gelaten dat al in een bijlage bij de
Master Statement of Work
staat:
"
Remarks:
The configuration is suitable for development, validating the solution, and running the solution in a production mode
The A (acceptance) and DT (development-test) environments can be hosted by [X] Software. [X] Software will deliver support during working hours. There is no 24x7 SLA offered for those environments. In case of any system outage (hardware, networking, application), the application will not be available till the problem is rectified.
For the P (production) system, it is recommended to use a professional external cloud hosting partner. External cloud hosting is recommended for guaranteed stability, high-available hardware and network bandwith."
Blue Ocean heeft evenmin betwist, althans onvoldoende duidelijk betwist, dat zij uit kostenoverwegingen heeft besloten de software te laten draaien op de interne infrastructuur van [X] , nadat [X] had medegedeeld de goede werking van de software niet te kunnen garanderen indien en zolang de software draaide op haar interne infrastructuur.
Het hof wijst er verder op dat [X] ook in het op 23 juni 2017 aan Blue Ocean toegezonden evaluatierapport heeft geadviseerd om een
professional hosting party
in te schakelen.
Dit alles daargelaten, uit de PSA en de daarop gebaseerde overeenkomsten kan niet worden afgeleid dat [X] verantwoordelijk was voor
hosting
van de applicatie op het niveau van een
professional hosting party
. In elk geval heeft Blue Ocean onvoldoende duidelijk toegelicht waarom dat wel uit de PSA en de daarop gebaseerde overeenkomsten zou kunnen worden afgeleid. Dat volgt ook niet uit de omstandigheid dat [X] ondersteuning heeft geboden bij de implementatie van de applicatie bij de klanten van ItsAllAbout. Er kan dus niet worden geconcludeerd dat [X] in dit opzicht haar inspanningsverbintenis heeft veronachtzaamd.
Browsers
3.14
In het evaluatierapport heeft [X] het volgende opgemerkt over browsers (waarbij IE10 en IE11 staat voor Internet Explorer, versies 10 en 11, en UI voor
user interface
):
" [X] has made the design choice to use Angular Material libraries to support the UIs with animation and special effects as per the request from ItsAllAbout to make the UIs more lively. Angular Material libraries unfortunately are not well supported in old versions of IE. During the initial collaboration between [X] and ItsAllAbout it was agreed that we need to provide support for browsers like IE10 and IE11. During that time however, [X] did not use Angular Material. When deciding to adopt the Angular Material framework, it was not discussed between ItsAllAbout and [X] that the consequence of adopting Angular Material would be that IE10 and IE11 support was stopped."
3.15
Bij conclusie van antwoord in reconventie heeft [X] aangevoerd dat niet is overeengekomen dat de software zou kunnen draaien op alle browsers van het type Internet Explorer, Safari en Chrome. Verder heeft Microsoft op 12 januari 2016 aangekondigd IE10 niet meer te ondersteunen. Gelet daarop kan van [X] niet worden verwacht dat zij IE10 wel blijft ondersteunen, aldus [X] .
De rechtbank heeft overwogen dat [X] heeft geprobeerd een aantal browserversies toch te ondersteunen (onder 4.3).
Blue Ocean heeft bij grief 2 aangevoerd dat [X] de keuze voor Angular Material heeft gemaakt en dat die keuze ervoor zorgde dat de applicatie niet ondersteund werd door IE10 en IE11.
3.16
Gelet op de inhoud van het evaluatierapport gaat het hof ervan uit dat Blue Ocean in beginsel mocht verwachten dat de applicatie zou kunnen draaien op IE10 en IE11, ook al staat dat niet uitdrukkelijk in de PSA, de
Master Statement of Work
of zes van de zeven
Statements of Work
(terwijl de zevende kennelijk op een module van een andere klant ziet). Het hof volgt [X] wel in haar standpunt dat dit vanaf 12 januari 2016 niet meer gold voor IE10, omdat Microsoft die versie van Internet Explorer vanaf die datum niet meer ondersteunt. Op zichzelf diende [X] zich echter voldoende in te spannen om te bewerkstelligen dat de applicatie zou kunnen draaien op IE11. De keuze voor Angular Material betreft het design en [X] is daarvoor verantwoordelijk.
Geen grief is echter gericht tegen de overweging van de rechtbank dat [X] heeft geprobeerd een aantal browserversies toch te ondersteunen. In het evaluatierapport staat ook dat de problemen met IE11 zijn opgelost door middel van
'workarounds'
, dat IE11 nu wordt ondersteund en dat dit getest is. Daarom kan ook in dit opzicht niet worden aangenomen dat [X] haar inspanningsverbintenis heeft geschonden.
Ondersteuning bij de implementaties
3.17
Bij grief 2 heeft Blue Ocean aangevoerd dat [X] actief heeft meegewerkt aan de terbeschikkingstelling van de applicatie aan de klanten van ItsAllAbout. Zij heeft inlogcodes beschikbaar gesteld en deelgenomen aan communicatie met die klanten. Op grond hiervan mocht Blue Ocean ervan uitgaan dat de applicatie voor gebruik gereed was, aldus Blue Ocean.
3.18
Het hof verwerpt dit argument. Het was de eigen verantwoordelijkheid van Blue Ocean om te beoordelen wanneer zij de applicatie in gebruik zou geven aan haar klanten, al dan niet in het kader van een pilot en al dan niet in een fase waarin de applicatie gereed was voor gebruik. Uit de enkele omstandigheid dat Blue Ocean ondersteuning bij de implementaties bood, mocht Blue Ocean redelijkerwijs niet afleiden dat de applicatie gereed was voor gebruik. Dit geldt temeer nu overeengekomen was dat Blue Ocean verantwoordelijk was voor de uitvoering van acceptatietesten.
Acceptatietesten
3.19
In art. 2.4 van de PSA staat dat Blue Ocean bij uitsluiting ervoor verantwoordelijk was dat zij voor iedere geleverde module alle acceptatietesten zou uitvoeren die redelijkerwijs nodig waren. Ook de
Statements of Work
gaan daarvan uit blijkens hetgeen daarover is opgenomen onder 1, 3.0 en 5.0.
3.20
Blue Ocean heeft bij grief 2 aangevoerd dat de werkwijze was dat telkens als een module in de ogen van [X] gereed was, [X] aan [A] vroeg of Blue Ocean de module wilde bekijken. [A] diende dan in een Excel-file op te geven op welke punten de module niet overeenkomstig de specificaties functioneerde. Dat heeft [A] ook steeds gedaan. [X] heeft tijdens het ontwikkeltraject nooit aangegeven dat dit niet genoeg was en dat een test met meer diepgang diende plaats te vinden, laat staan aan welke eisen de test diende te voldoen.
3.21
[X] heeft aangevoerd dat zij meermalen bij Blue Ocean erop heeft aangedrongen acceptatietesten uit te voeren. Het was aan Blue Ocean om de omvang van de acceptatietesten te bepalen. Blue Ocean heeft slechts enkele keren acceptatietesten uitgevoerd. Die bleken niet afdoende te zijn. Daarnaast gaf Blue Ocean in strijd met art. 4.3.1 van de PSA de software al tijdens de testperiode aan eindgebruikers in gebruik. [X] heeft Blue Ocean vervolgens meermalen geadviseerd acceptatietesten van voldoende diepgang en omvang uit te voeren alvorens de software aan eindgebruikers in gebruik te geven. [X] had niet de verplichting Blue Ocean bij de hand te nemen ten aanzien van het uitvoeren van acceptatietesten, aldus [X] .
3.22
[X] heeft niet betwist dat [A] aan [X] in Excel-files heeft opgegeven op welke punten de module volgens hem niet overeenkomstig de specificaties functioneerde. Ook indien [X] daarom heeft verzocht en indien zij deze Excel-files aan [A] ter beschikking heeft gesteld, ontslaat dat Blue Ocean echter niet van haar contractuele verantwoordelijkheid om zelf acceptatietesten van voldoende diepgang en omvang uit te voeren en om de modules niet bij eindgebruikers in gebruik te geven voordat acceptatietesten van voldoende diepgang en omvang zijn uitgevoerd. Blue Ocean heeft de modules aan haar klanten ter beschikking gesteld zonder dat er acceptatietesten van voldoende diepgang en omvang waren uitgevoerd. Bij de implementatie bij de klanten kwamen fouten aan het licht. Voor zover dat fouten zijn waarvan kan worden aangenomen dat zij zouden zijn opgelost, als de modules eerst voldoende getest waren geweest, komt dat voor eigen risico van Blue Ocean. Hieraan doet niet af dat [X] ondersteuning heeft verleend, toen ItsAllAbout de modules implementeerde bij de klanten. Dat maakt niet dat de fouten voor risico van [X] komen.
[X] mocht ervan uitgaan dat Blue Ocean de deskundigheid en capaciteit bezat om acceptatietesten van voldoende diepgang en omvang uit te voeren, althans om de consequenties ervan te dragen als Blue Ocean de modules bij klanten implementeerde voordat zij voldoende waren getest (vergelijk 3.6 hiervoor).
Verdere beoordeling
3.23
Bij grief 3 heeft Blue Ocean aangevoerd dat [X] niet heeft voldaan aan haar informatie- en waarschuwingsplichten. Blue Ocean heeft hiertoe aangevoerd, verkort weergeven:
- het verschil in deskundigheid tussen partijen is groot;
- [X] heeft toegestaan dat Blue Ocean de applicatie slechts testte door het invullen van Excel-files zonder te waarschuwen dat dit niet afdoende was;
- [X] heeft toegestaan dat de applicatie ge-
host
werd op de servers van [X] zonder te waarschuwen dat dit tot problemen zou leiden;
- [X] heeft er actief aan meegewerkt dat Blue Ocean de applicatie onder die omstandigheden bij klanten implementeerde.
3.24
Zoals hiervoor is overwogen, mocht [X] ervan uitgaan dat Blue Ocean voldoende deskundig was. Verder mocht [X] ervan uitgaan dat Blue Ocean overzag dat zij zelf verantwoordelijk was voor het afdoende testen van de modules en wat de risico's waren van het implementeren van modules bij klanten zonder afdoende testen en van het afzien van de mogelijkheid een
professional hosting party
in te schakelen. Gelet op dit alles kan niet worden aangenomen dat [X] enige op haar rustende informatie- of waarschuwingsplicht heeft geschonden.
3.25
Al het voorgaande leidt tot de slotsom dat Blue Ocean onvoldoende heeft gesteld om te kunnen aannemen dat [X] in enig opzicht is tekortgeschoten. Ook de argumenten van Blue Ocean dat [X] tot vijfmaal toe heeft geprobeerd de problemen op te lossen, maar telkens vruchteloos, dat de lijst van problemen die in de brief van DAS van 22 september 2017 staat, lang is en dat die problemen in de weg staan aan gebruik van de applicatie, maken dat niet anders. Hierbij is van belang dat niet in geschil is (i) dat de te ontwikkelen applicatie maatwerk betrof en (ii) dat het bij nieuw te ontwikkelen software te verwachten en gebruikelijk is dat na ontwikkeling nog fouten zullen voorkomen. Aan bewijslevering komt het hof niet toe. Het bewijsaanbod van Blue Ocean wordt daarom gepasseerd. Dat geldt ook voor het aanbod bewijs te leveren middels deskundigen.
3.26
Blue Ocean was niet bevoegd haar betalingen op te schorten. [X] was wel bevoegd de PSA en de daarop gebaseerde nadere overeenkomsten buitengerechtelijk te ontbinden. Zij kan ook betaling verlangen van de openstaande facturen. Tegen de toewijzing door de rechtbank van de werkelijke incassokosten zijn geen grieven gericht. Aan Blue Ocean komt geen vordering tot ontbinding en schadevergoeding toe. De toewijzing van de vorderingen in conventie en de afwijzing van de vorderingen in reconventie dienen in stand te blijven.
3.27
De grieven 6 en 7 missen zelfstandige betekenis. De grieven behoeven voor het overige geen bespreking. Zij falen. Het vonnis waarvan beroep zal worden bekrachtigd. Blue Ocean zal als in het ongelijk gestelde partij worden veroordeeld in de kosten van het geding in hoger beroep.
4
Beslissing
Het hof:
bekrachtigt het vonnis waarvan beroep;
veroordeelt Blue Ocean in de kosten van het geding in hoger beroep, tot op heden aan de zijde van [X] begroot op € 5.382,00 aan verschotten en € 3.919,00 voor salaris, te vermeerderen met de wettelijke rente, indien niet binnen veertien dagen na dit arrest aan de kostenveroordeling is voldaan.
Dit arrest is gewezen door mrs. G.C.C. Lewin, E.E. van Tuyll van Serooskerken-Röell en A.P. Wessels en door de rolraadsheer in het openbaar uitgesproken op 14 juli 2020.