从老旧定制DotNetNuke应用搬迁到现代的SuiteCRM,老系统是一个网站+自定义的客户数据管理,这个系统是10年前(2008年)在DotNetNuke软件包的基础上进行了二次开发,当时开发费用为30万元,从现在的数据看,DotNetNuke是一款市场占有率很低的开源CMS,因为没有研究过,所以不想妄加评论;
问题:
- 网站只适合PC端,所有已经没有人看了;
- 客户数据管理系统,是目前主要使用的系统,通过10多年来的积累,成为企业最重要的资源,但这是根据自己工作人员的要求设计的,水平大大受到限制,除了客户数据本身和一些常规分类外,没有像样的统计,无法记录跟客户互动等其他重要的信息。
因此希望将企业最重要的资源搬迁到现代的SuiteCRM,用更好的方法来管理、跟踪客户的数据,可以大大提高数据的利用率,更好服务客户。
在此分享这个从一个老系统迁移到SuiteCRM的过程,展示解决路径,也许可以让人受到启发,降低入SuiteCRM的门槛,客户的老数据都可以搬迁到SuiteCRM。
初始状态和难点
- DotNetNuke 是基于SQL Server数据库,SuiteCRM是基于 MySQL数据库。这里有数据类型的差异,比较棘手的日期和时间在sql文本中的显示方式;
- 客户数据3万条左右,不少,也不能算多,但无法手工操作,必须的用编码完成;
- 在邮箱中有10万多条退信,是这10年中攒下来的,从来没有处理过,但必须把这些无效邮件地址在搬迁前分离出来;
- 客户数据3万条中还有无效数据,也要尽可能分离出来;
- 老的客户数据应该放到SuiteCRM哪个位置?这个考虑了三周,最后放到“潜在客户”项里,不开发新的类型,也不放到“客户”项里;
工作路径
在搬迁开始前必须先计划好老客户数据如何对应新结构的每一项
- 从10万多条退信中找出无效邮件地址,这是要写Code才能完成的工作,跟我们的SuiteCRM没有直接的关系,
- 用SQL命令将找出的无效邮件地址从数据库中删除;
- 在老数据库里分离出无效的客户;
- 生成SuiteCRM必须的ID和相应的Fields;
- 在搬迁前,做好SuiteCRM的备份;
- 先做小批量的搬迁测试
- 正式搬迁
用到的工具
选择合适的工具极其重要,效率的差异可以上千倍,找出合适的工具也是有代价的,不是贵的就一定有效。
- 从10万多条退信中找出无效邮件地址,在例子是使用了Python的code,在e mail的文本文件中查出无效邮件地址,Python的源码可以在网上查到,这里给出一例子,是一种直接进邮箱的很不错的方法。
- 各种主流 SQL Server 迁移到 MySQL 工具对比,直接用工具,在表多,数据少的情况下是最有效的; 如果表不多,数据量很大,就没有多少优势了。
- 免安装、轻量级HeidiSQL 工具,中文介绍,官网,例子中主要是用这款工具,通常情况还不错;
- Phpmyadmin, 这是一款需要在服务器上安装的软件,有时候会有惊艳的表现;
- MS Access 跟SQL Server的衔接非常好,所以有时还很有用;
- Notepad++,这是一款主力编辑器,但也有无能为力的时候,当一个文件有800MB时就无法打开了,此时就得用vim了;
- SuiteCRM有现成的导入导出界面,原则上可以用来导入旧系统的数据,但有两个问题,
a. 非常慢,占有很大的硬件资源。
b. 在导入带换行符和日期的数据容易出错
前后花了3周时间
从规划到实施
体会
- 搬迁不是太难,但又不少原先没有想到的事情发生,需要有足够的时间和一定的能力;
- 一定要事先做好备份,出点差错很正常,但要有挽回的余地;
- SQL 命令是搬迁的利器,其他的方法都有太多的不可控性;
- Python作为辅助工具也很重要,请准备好这方面的帮手,虽然可能只需要30-40行代码,但可以解除你无数的烦恼,当然在此可以用很多其他语言来替代;
- SuiteCRM有现成的导入导出界面虽然慢,如果数据方面没有出错的问题,可能是一种自主完成的低成本方案,因为这个几乎不需要预备知识。