软件托管可在软件供应商破产或停止维护产品时保护您的权益:独立代理人持有源代码,并在约定的事件发生时将其交付给您。根据荷兰法律,该机制仅适用于三方协议,且您的源代码使用许可必须是预先授予的,而非在发布时授予。
如果您的业务依赖于您未编写的软件,那么您就依赖于编写该软件的公司。您拥有可执行代码和许可证;供应商则拥有源代码、构建工具和相关技术。当供应商偿付能力和资质良好时,这种不平衡是可以接受的;但一旦供应商出现问题,就会引发问题。下文我们将解释如何根据荷兰破产法设置托管账户。
什么是软件托管?它涵盖哪些风险?
供应商会将源代码和相关支持材料存放在独立的第三方托管机构(即第三方托管代理)处。该代理会保管这些材料,直到发生特定事件,然后将其交付给您,以便您可以继续运行软件。
风险在于业务连续性,而非所有权。一家公司如果其订单处理、患者记录或生产计划都依赖于某个供应商的产品,就无法在一夜之间完成切换。迁移需要数月时间,而且通常需要原供应商的协助。托管账户可以为您争取时间,让您有序地完成迁移。以下三种情况至关重要。
- 破产。 供应商被宣布破产,一名受托人(馆长一旦任命了负责人,员工就会离职,支持也会停止。这就是第三方托管制度存在的意义,也是荷兰法律发挥最大作用的情形。
- 停止运营。 供应商撤回产品、停止支持您的版本,或者被一家对您的安装不感兴趣的公司收购。这种情况比破产更常见,而且通常不会出现在免责条款中。
- 持续维护失败。 供应商仍然存在,也仍然开具发票,但不再修复缺陷、发布安全补丁或保持产品与所依赖系统的兼容性。
应该选择两方合作还是三方合作?
选择三方协议。只有这样,解除合同才能由有偿付能力的第三方根据其自身合同执行,而不是由破产的供应商执行。
双边协议是指主合同中供应商承诺在特定事件发生时移交源代码。这种协议成本低廉,但安全性较差。没有人独立核查源代码是否已交付或是否及时更新。更重要的是,破产后,您实际上是要求破产管理人履行破产财产的义务,而破产管理人并没有义务这样做。
三方安排将托管代理人作为合同一方。代理人负责保管定金、核查资金、保管资金,并直接负有释放定金的义务。代理人还负责决定是否已发生释放事件。这使得受托人无法做出决定,因为受托人没有理由帮助您。
押金应该包含哪些内容?
远不止源代码本身。没有构建说明和依赖项列表的源代码可能需要数周的逆向工程才能生成可用的软件,而当你的系统已经停止支持时,你根本没有那么多时间。
这是实践中最常见的错误,而且不合法。下表列出了有效存款应包含的内容。
| 元件 | 为什么需要它 |
|---|---|
| 源代码,完整且版本化 | 必须与实际使用的版本一致,而不是与开发分支版本一致。 |
| 构建和部署说明 | 编译器和运行时版本、构建脚本、环境变量和部署步骤。缺少它们,代码就无法成为可运行的软件。 |
| 技术和功能文档 | 架构、数据模型、接口和已知缺陷。这决定了第三方是只能运行代码,还是只能维护代码。 |
| 第三方和开源组件 | 依赖项列表,包含版本和许可条款。某些商业组件需要从其供应商处单独购买许可证。 |
| 许可证密钥、证书和凭证 | 需要连接已不存在的许可证服务器的软件将无法继续运行。 |
增加更新保证金的义务。签约时一次性缴纳的保证金在发布一两次后就会失效。将保证金与发布计划挂钩,例如每次重大版本发布或固定周期,并要求在保证金逾期时收到通知。
您需要哪种级别的验证?
对大多数客户而言,完整性和文档审查是合适的标准。只有当系统中断会威胁到业务时,才选择完整构建并运行测试。
- 文件检查。 代理程序确认存款文件可读、无病毒且与文件列表相符。它证明文件已送达,但并不能证明文件能够正常使用。仅凭这一点,它提供的保护作用有限。
- 完整性及文件审核。 该代理会将构建指令和依赖项与提交的文件进行比对,并报告任何不符之处。它能以远低于完整测试的成本,发现常见问题,例如缺少构建步骤、依赖项未记录以及您无权使用的组件。
- 完整构建并运行测试。 代理程序在干净的环境下编译存款模型,并使用测试数据运行它。这是唯一能验证存款模型是否有效的步骤,但速度较慢、成本较高,并且随着软件的更新,必须重复执行。
如何制定无可争议的发布事件?
每项事件都应可通过文件或时间推移来验证,而非仅凭对供应商行为的判断。托管代理人必须在压力下且无法律咨询的情况下执行该条款。
| 发布会 | 如何使其具有客观可验证性 |
|---|---|
| 供应商破产 | 法院判决,或破产登记簿上的记录。 |
| 暂停支付或重组程序 | 任命管理人或重组专家,如登记册所示。 |
| 企业解散或停止营业 | 从商会贸易登记册中除名,或通过解散决议。 |
| 产品或当前版本停产 | 书面终止使用通知,或者供应商停止发布产品后经过一段固定期限。 |
| 持续未能维持 | 在合同规定的响应时间内,在发出通知并给予整改期后,未能纠正已确定严重程度的缺陷,且在规定的期限内重复发生一定次数。 |
| 将软件转让给第三方 | 收购方未在规定期限内以书面形式承担维护义务。 |
还有两点至关重要。首先,将异议举证责任放在供应商身上:您向代理人提供证据,供应商在规定的短时间内提出异议,如果供应商不提出异议,代理人则解除合同。其次,事先约定争议解决程序,例如由专家提供具有约束力的建议或在短时间内进行仲裁。这样,提出异议只需几天时间,而不是几个月。
如果供应商破产,托管账户里的钱会怎么样?
受托人可以拒绝履行供应商的现有义务,例如维护和更新,但不能撤销破产前授予您的许可。因此,您的安排是否有效取决于破产前的架构。
受托人可以拒绝什么?
根据荷兰破产法(Faillissementswet,简称Fw)第37条,您可以给予破产管理人一段合理的时间,使其说明是否会履行双方在破产时均未完全履行的合同。如果破产管理人未作出确认,则其丧失向您要求履行合同的权利,而您则只能在破产程序中提出债权(Fw第37a条)。
第37条Fw条款并未终止合同,也未赋予受托人终止合同的权力。合同继续有效,但受托人没有义务履行。对于软件而言,这意味着受托人可以拒绝维护、支持、更新、托管和后续充值:这些都是会给遗产带来成本的积极义务。受托人拒绝这些义务是可以预料的。真正的问题是,受托人是否有权进一步阻止您使用您已经拥有的资源。
最高法院是如何处理破产案件中的使用权问题的?
近十年来,答案一直悬而未决。在Nebula 案(最高法院,2006 年 11 月 3 日,ECLI:NL:HR:2006:AX8838)中,最高法院裁定破产本身并不终止现有协议。但法院补充道,享有使用权的当事人不能像破产未发生时那样继续对破产管理人行使该权利。许多人将此解读为允许破产管理人撤销现有的使用权,这令被许可方感到担忧。
这种解读并未持续。在ABN AMRO/Berzona案(最高法院,2014年7月11日,ECLI:NL:HR:2014:1681)中,最高法院裁定,破产对现有的双方协议或由此产生的义务不产生任何影响。受托人无权行使法律或合同赋予的权力之外的任何权力;例如,受托人不能终止仍在有效期内的租赁合同。
该立场已在Credit Suisse/Jongepier qq 案(最高法院,2018 年 3 月 23 日,ECLI:NL:HR:2018:424)中得到确立。破产管理人可以拒绝履行债务。然而,破产并不赋予破产管理人撤销债务人在破产前已履行的义务,或终止持续履行(只要该履行包含容忍或不作为)的权力。
最后一点对软件而言至关重要。许可协议本质上是权利人承诺容忍原本会侵犯版权的使用行为,这是一种持续的容忍行为。根据现行判例法,破产前有效授予的许可协议在破产后仍然有效,受托人无权撤销该协议。受托人可以拒绝所有已生效的许可协议,但不能终止您已拥有的使用权。
这对你们的安排意味着什么?
接下来有两点需要说明。首先,解除义务应由托管代理人承担,而非供应商。代理人的解除义务是其自身根据合同履行的义务,而根据《联邦民事诉讼规则》第37条,受托人所承担的义务是遗产应履行的义务。相比之下,双边承诺则要求遗产履行,而受托人可以拒绝履行该承诺。
其次,应提前授予许可,而不是在发行时才授予。这是起草过程中最重要的一点,我们将在下文详细讨论。
根据《法院确认非诉讼重组计划法》(WHOA)进行的重组,而非破产,第373条Fw款限制了仅因重组程序启动而允许交易对手变更、中止或终止合同的条款的适用。该条款如何影响三方托管安排中的解除触发条件,判例法尚未明确。切勿将WHOA程序的启动作为唯一的解除事件;应将其与破产、终止经营和持续未能维持运营等事件结合起来考虑。
许可证应该如何构建?
现在就根据合同授予许可,但须满足先决条件,以便在产品发布时生效。如果供应商破产,仅在产品发布时承诺授予的许可可能永远无法实现。
托管服务提供的是源代码副本,而非任何使用权。源代码受版权保护,编译、修改和运行都需要获得版权所有者的许可。如果没有涵盖这些行为的许可,已释放的托管文件只是一个您无法使用的文件夹。因此,您需要将托管服务与一份明确允许您在释放后使用、编译、修改和进一步开发源代码,以及委托第三方进行这些操作的许可协议结合使用。实际上,您很少会亲自进行这些工作。
时机是关键所在。如果解约事件是破产本身,那么解约时授予的许可证必须由债务人授予,而债务人自破产令颁布之日起便无权处置破产财产(参见《破产法》第23条和第35条)。受托人不会为您授予许可证。瑞士信贷/Jongepier可以保护您已拥有的许可证,但无法保护您从未拥有过的许可证。
根据附有先决条件的许可协议,该权利自合同签订之日起即已存在,仅其效力被推迟。荷兰法律通常认可这种结构。在Rabobank/Reuser qq案(荷兰最高法院,2016 年 6 月 3 日,ECLI:NL:HR:2016:1046)中,荷兰最高法院认可,如果一项附条件权利在破产前已设立,则破产后条件的履行无需债务人采取任何进一步行动即可生效。该案涉及有条件的货物转让以及基于该附条件权利的质押权。法律文献支持将此原则应用于附条件授予的版权许可,但法院尚未对此作出裁决。
合同中还应确认,使用已发布的材料无需供应商或其受托人的进一步同意,并且您可以将子许可授予后续开发者。
SaaS 或云服务需要哪些条件?
不仅仅是源代码。如果供应商的平台离线,您将丢失应用程序、其运行环境以及您的数据,而源代码只能缓慢地恢复应用程序本身。
对于自行运行的软件,源代码、编译说明和许可证几乎就构成了一个完整的解决方案。对于服务而言,持续性协议还必须涵盖以下三点。
- 运行环境。 容器镜像、基础设施即代码定义、配置、网络和安全设置以及运行时依赖项:足以在其他地方重建平台。
- 您的数据。 定期以文档化、非专有格式导出您自己的数据,并包含数据模式。这些导出操作应贯穿整个合同期,而不仅仅是在发布时进行,因为无法读取的数据几乎没有任何用处。
- 主办关系。 接管供应商与其托管服务提供商之间的合同的一种方式,或者您可以接管帐户并直接向提供商付款的一种安排。
除了第三方托管之外还有其他选择吗?费用由谁承担?
对于标准产品而言,由于您只是众多客户之一,真正的风险在于停产而非失败,因此更轻便的选择通常更具性价比。托管费用通常由客户承担。
通常有三种替代方案更为实用。数据导出权限(定期以文档化的格式导出数据,并至少测试过一次)可以以较低的成本规避大部分风险。运行副本权限(可部署的镜像,可在过渡期内运行)比从源代码重建速度快得多,能更快地恢复服务。直接向托管服务提供商付费可以确保迁移期间环境持续运行;这是云服务连续性最经济的方式,也是最常被忽视的方式。
如果您选择使用第三方托管服务,预计会收取一次性设置费、年度托管费以及每次验证的单独费用,具体费用取决于验证的深度。这些费用通常由需要保障的一方(通常是客户)承担。如果供应商将第三方托管作为卖点,则可能会承担这些费用。如果同一产品的多个客户都使用第三方托管服务,则可以分摊费用,这通常是供应商拒绝提供第三方托管服务时的折衷方案。要求代理人在费用未支付时通知您,并赋予您自行支付这些费用的权利。
协商托管事宜的核对清单
在审核托管方案或软件合同时,请使用以下问题。
- 这是真正的三方安排吗?是否存在独立代理人,该代理人对您负有直接解除合同的义务?
- 是否授予使用、编译、修改和进一步开发源代码的许可 现在是在满足先决条件的前提下,而不是在发布时就承诺?
- 该预付金是否包含构建说明、依赖项、许可证密钥和文档,并随每次版本更新?
- 双方商定采用何种级别的验证,以及验证频率如何?
- 能否通过文件或时间推移来确定每次发布事件,并设定较短的异议期和快速的争议解决程序?
- 对于 SaaS 服务:是否涵盖环境、数据和托管关系,还是仅涵盖代码?
- 谁来支付费用?如果不支付费用会发生什么?托管协议是否符合主合同的适用法律和知识产权条款?
综上所述
- 软件托管可以在软件供应商出现故障时确保服务的连续性,但前提是需要缴纳包含构建说明、依赖项和文档的押金。
- 选择三方安排,由有偿付能力的托管代理人执行释放程序。
- 根据荷兰判例法,破产前授予的许可在破产后仍然有效;受托人只能拒绝积极履行。
- 现在就授予许可,但须满足先决条件,而不仅仅是在发布时才授予。
- 对于 SaaS 服务,还要确保运营环境、数据和托管关系的安全。
荷兰破产受托人能否阻止托管代理人发布源代码?
并非直接如此。在三方安排中,托管代理人根据其自身合同负有解除债务的义务,且该代理人并未破产。根据《破产法》第37条,受托人负责破产财产应履行的义务。这正是我们更倾向于三方安排而非供应商承诺的主要原因。
供应商破产后,我的软件许可还能继续有效吗?
在破产程序开始前有效授予的许可在破产程序结束后仍然有效,受托人无权撤销该许可。在 Credit Suisse/Jongepier qq 案(最高法院,2018 年 3 月 23 日,ECLI:NL:HR:2018:424)中,最高法院裁定,受托人不得终止持续履行的、包含容忍或不履行的义务,而许可即属于此类义务。受托人可以拒绝履行维护、支持、更新和托管等积极义务。
Nebula案的判决对被许可方是否仍然构成威胁?
情况并非如人们曾经担忧的那样。Nebula案(最高法院,2006年11月3日,ECLI:NL:HR:2006:AX8838)曾被广泛解读为允许受托人撤销现有的使用权。但Berzona案和Credit Suisse/Jongepier案此后明确指出,受托人可以拒绝履行合同,但无权终止您已持有的许可。
为什么只在发行时才授予许可会成为问题?
因为届时必须在破产程序结束后才能授予许可,而此时债务人已无法处置破产财产,受托人也没有义务帮助您。判例法保护您已持有的许可,但并不创设新的许可。现在就授予许可,但需附加一项先决条件,该条件在许可解除时生效。
第三方托管对SaaS供应商有帮助吗?
只能部分解决。源代码并不能恢复正在运行的服务。一个可行的 SaaS 方案还必须涵盖运维环境、以文档化格式定期导出数据,以及接管或支付托管服务提供商费用的途径。缺少这些,你得到的就只是一个重建项目,而不是服务的连续性。
付费验证值得吗?
是的,至少在中间层面上是这样。文件检查只能确认文件已到达。而对照构建说明和依赖项列表进行完整性检查,才能发现真正重要的问题,例如缺少构建步骤以及您无权使用的组件。完整的构建和运行测试是唯一确凿的方案,如果系统中断会威胁到您的业务,那么这样做是值得的。
Law & More 我们提供软件合同、许可和托管安排方面的咨询服务,包括破产情况下的相关事宜。不确定您的处境?请告诉我们您的情况。我们将在一个工作日内告知您可行的方案。
创新中心 Law & More 我们网站上有相关说明,可以帮助您解决这个问题。 信息技术律师 页面。