第二部分留给您一份一页纸的清单:关键文件、负责人、依赖它们的内容,以及它们是否有备份。这份清单告诉您要迁移什么。本部分告诉您哪些内容不能原样迁移。

常见的看法是,迁移只是一个技术步骤:导出文件,导入新系统,完成。从技术上讲确实如此,而在实践中,这是把一个小问题变成昂贵问题的最快方式。电子表格天生宽容:它接受您在任何单元格中输入的任何内容,并把解读的工作留给您。系统则不然:它要求日期就是日期,数字就是数字,一个客户就是拥有一条记录的单一实体。因此,当未清理的数据被迁移时,混乱并不会消失;它会以对不上的报表、无法关联到客户的发票以及不相符的余额的形式浮现出来。随后便是终结许多项目的那句话:新系统不好用。

为什么清理必须在迁移之前,而不是之后

推迟清理很有诱惑力,而且理由充分:清理是枯燥的工作,不会出现在任何演示中,而新系统的界面会。于是决定先迁移、后清理。但数据一旦进入系统,就开始流转:针对重复的客户开具发票,订单关联到重复的物料,报表建立在不完整的数字之上。每一笔新交易都在错误之上再加一层,使更正变得更困难、风险更高,因为编辑一条已有财务交易流转过的记录,与编辑文件中的一个单元格完全不同。

未清理的数据普遍是系统项目停滞的一个反复出现的原因,我们在ERP 项目为何失败以及如何让您的项目成功一文中将它与其他原因一并阐述。实际的结论是:数据仍在静态文件中时,清理成本最低;一旦数据进入正在运行的系统,清理成本最高。

几乎每张表格都存在的五个问题

这些并不是罕见的错误;它们是一个什么都允许的工具的自然结果。您会在自己的文件中发现其中大部分:

  • 同一往来方有多个名称。同一个客户出现三次:一次用商号,一次用业主的名字,还有一次是某人匆忙输入的缩写。在文件里,它们是任何读者都能看懂的相邻行。到了系统中,它们会变成三个独立的客户,各有各的余额和历史,于是关系记录被拆分,三者中没有一个能给您完整的全貌。同样的问题也会出现在物料和供应商上。
  • 日期格式混杂。同一列中,一个日期写成日/月,另一个写成月/日,第三个则写成文本,例如节后或月底。只要只有人来读,这还能过得去;但任何基于这一列的排序、时长计算或按时间生成的报表,都会信心十足地给出错误答案,这比给出一个看得见的错误更危险。
  • 以文本形式存储的数字。单元格内带着货币符号输入的金额,同一格里带着计量单位的数量,或者以多余空格开头的数字。在人眼看来是数字,在机器看来却不是,因此它无法求和、比较或迁移;而您通常会在迁移后的第一份财务报表中才发现这一点。
  • 无人能说清含义的列。一个名为备注、状态或临时的列,多年前为一个早已结束的用途而添加,有时有内容,有时是空的。它通常会被一起迁移,因为没人敢删除它,于是它作为一个既无定义也无负责人的字段进入系统,并不断出现在界面上,让您之后接手的人感到困惑。
  • 承载含义的彩色单元格。这是清单中最危险的一项。黄色表示逾期,红色表示暂停,绿色表示已收款。这不是格式,而是数据,只不过是存储在颜色以及涂色者记忆中的数据。导出文件时,文本会被迁移,颜色却会被丢弃,于是您失去了每天赖以经营业务的信息,而且不会收到任何警告。

唯一的规则:单元格之外的每一种含义都必须变成字段

如果本部分您只记住一句话,那就是这一句:凡是保存在颜色、行的位置或某人脑子里的含义,都必须在迁移前变成一个写明的列。测试简单而毫不留情:把文件导出为不带任何格式的纯文本,然后问一问丢失了哪些信息。在这项测试中消失的一切,正是现在必须变成字段的内容。

转换本身并不是技术工作,而是一项定义工作。仅仅创建一个状态列是不够的:您必须确定其允许的取值,并厘清相互重叠的取值。暂停和取消是一种状态还是两种?一条记录究竟在哪个时间点算作逾期?这些是关于公司如何运作的问题,而不是关于编程的问题,也是企业主从清理阶段获得的最有价值的东西,因为一次性把它们回答清楚,就能终结以往每次都靠口头解决的争论。

Origami 的观点

我们是一家为沙特企业构建系统的科技公司,我们把清理阶段视为系统设计的一部分,而不是设计之前的行政工作。原因在于,数据中的每一个问题都暴露出一条未成文的业务规则:重复的客户说明往来方缺少一个公认的标识符,彩色单元格则揭示出一个从未被正式承认的真实运营状态。这些发现是正确设计的原材料,因此我们会与客户一起解读它们,而不是把它们直接交给导入工具。

我们推荐的顺序是先统一定义:谁算作一个客户,什么算作一个物料,每个决策字段允许哪些取值。此后,迁移就成为一项可以重复和复核的干净操作。这正是我们构建系统的服务的起点,也与我们在从门店到系统一文所述真实案例中看到的逻辑相同:区分有序运营与临时应付的,不是界面,而是界面之下的数据纪律。

清理的实用顺序

把每个文件都彻底清理一遍,是一个没有尽头的项目。请按照能在几天内给您带来可迁移成果的顺序开展工作:

  • 从主数据开始,而不是从交易开始。客户、物料和供应商是被反复使用的短清单,清理它们会自动修正之后与之关联的成千上万行数据。发票和订单随后再处理。
  • 每个实体采用一个标识符。一个永不改变、永不重复使用的固定代码或编号,然后把每个旧名称和缩写映射到它。尤其对客户而言,准确的法定买方信息并非可有可无,因为天课、税务和海关总局(ZATCA)的电子发票要求明确规定了税务发票必须包含的内容;我们在工厂与仓库中的电子发票一文中阐述了一笔货物移动与其发票之间的联系。
  • 拆分每个复合单元格。数量放一列,计量单位放另一列;金额放一列,币种放另一列;姓名放一列,手机号码放另一列。规则是一格只放一项信息。
  • 在任何导入之前统一格式。整个文件使用同一种日期格式,单元格内的数字不带符号,手机号码使用统一格式。这项工作重复而枯燥,但只需做一次。
  • 在一张辅助表上记录您的清理决定。哪些记录合并到了哪里,哪些被删除,哪些仍有疑问。两个月后有人问某个客户去哪了,那张表就是答案;没有它,团队会对整个迁移失去信心。
  • 不要删除原件。把清理前的文件保存为一份封存的只读副本。清理涉及判断,而判断需要一个可以回溯的参照。

也不要等到数据完美才开始迁移,因为那一天永远不会到来。您需要的清洁程度是:关键字段正确、一致且有明确定义,而仍不完整的部分已知并有记录,而不是日后作为意外被发现。

在接下来的部分中

数据现在已经适合迁移,剩下的问题将决定业务在过渡期间是继续运转还是停摆:先迁移什么?下一部分将讨论迁移顺序、为什么主数据总是先于交易,以及如何在设定明确结束日期而非无限期的前提下进行并行运行。之后我们将讨论权限以及谁能看到什么,然后是您过去手工制作的报表,最后以迁移后的头三十天为本系列收尾。

参考来源