
1. 为什么我们决定把ServiceNow换掉先交代一下背景。我们公司之前的IT服务管理平台用的是ServiceNow用了差不多四年工单、变更、问题、资产模块都跑在上面。说实话ServiceNow功能确实强生态也成熟但用着用着我们发现几个很难忽视的问题。第一个是成本。ServiceNow是按用户数授权的而且价格不便宜。我们公司IT服务台加上各地分支机构的运维人员总共一百多个账号每年的订阅费用是一笔不小的支出。再加上后来集团要求降本增效IT预算被压得比较死领导层自然就开始关注这类SaaS工具的ROI。第二个是定制化的灵活性。ServiceNow的平台能力确实强但强归强很多我们想要的细节调整比如某个工单状态的流转条件、某个变更审批链路的特殊分支改起来特别费劲。我们ITSM管理员只有三个人没有专门的ServiceNow开发能力每次提需求给原厂或合作伙伴周期都很长一等就是好几周。时间一长业务部门对IT服务响应速度的抱怨也越来越多。第三个是数据合规和本地化部署的诉求。随着公司对数据安全的要求越来越高我们希望能把ITSM相关数据放在自己的内网环境里。ServiceNow虽然也提供数据中心区域选择但毕竟是外部SaaS服务一些涉及内部资产信息、网络拓扑的敏感数据放到外部平台安全团队那边一直不太放心。所以我们内部做了好几轮评估最后决定用一个国内团队维护、支持私有化部署、同时兼容ITIL流程的轻量级ITSM平台来替代ServiceNow。当时选型看了好几家包括轻帆云、某开源套件、以及另外一家国产商业产品。综合对比下来轻帆云在流程引擎灵活性、国产化环境适配、实施成本这几个维度上最符合要求我们就定了它。这篇文章就是想把我们团队从ServiceNow迁移到轻帆云的完整过程做一个复盘。重点会放在流程适配、数据迁移、集成联调这些落地环节上希望能给正在做类似选型或迁移的同学一些能直接用得上的参考。2. 迁移前必须先想清楚的三类问题2.1 需求清单不是“照搬”而是“重构”很多人做系统替换第一反应是把老系统的功能和配置原封不动搬到新平台上。我们一开始也差点走这条路拉着各模块负责人把ServiceNow里的表单字段、状态枚举、审批流一个个列出来准备照着搬到轻帆云。结果做到一半发现不对劲。ServiceNow的很多设计其实是为了适配它自己的平台逻辑和通用场景跟我们公司的实际业务流程并非完全匹配。比如ServiceNow里的“变更请求”默认带着一套复杂的风险评估模型但我们公司实际执行变更时根本没有那么细的评估维度反而因为字段太多、必填项太多业务人员填单子经常出错。所以我们停下来重新做了一遍需求梳理。做法是把ServiceNow里的所有流程和表单拉出来逐个跟业务负责人确认这个功能现在真的在用吗用得频繁吗如果新平台没有这个功能业务是否有替代方案如果新平台提供了比原来更简单的做法能不能把流程优化一下这个环节不要省也不要急着做技术方案。需求不梳理清楚后面适配和开发阶段一定会反复返工。2.2 数据迁移先盘清楚“数据量”和“数据质量”ServiceNow里存了我们过去四年多的工单、变更记录、问题记录、资产台账、知识库文章总量倒是不大核心表加起来也就几十万条记录。但数据迁移的难点从来不是数据量大而是数据质量太差。举个最简单的例子。ServiceNow里的用户表同一个员工在工单模块里录的是工号在资产模块里关联的却是邮箱前缀两边没有统一的主键。迁移到轻帆云之后如果不对这些关联关系做清洗和映射工单和资产的历史记录就串不起来查询和统计就会出现严重偏差。我们在迁移前专门花了两周时间做数据清洗优先级很简单先把用户、组织架构、资产台账这些基础主数据搞定再处理工单、变更、问题这些流水数据。基础数据不一致的先定一套映射规则让所有模块都用同一个工号字段做关联。数据质量不达标的历史工单比如缺少关键字段、状态值已经是废弃状态的归档到一个单独的库不往新平台灌。2.3 技术适配先做技术验证再正式启动这也是我们做这次迁移的一个重要前提。轻帆云支持私有化部署底层用的组件版本都做了国产化适配。我们IT侧有几个老系统跑在国产化环境上这次迁移顺带把ITSM也纳入统一管理降本的同时也减少了运维复杂度。不过这里我有一个比较深的体会就是技术选型阶段最好先做一次小范围的技术验证不要直接上生产。我们当时搭了一套轻帆云的测试环境把ServiceNow里最复杂的那个变更流程在测试环境1比1搭出来跑了几轮验证审批链路和通知逻辑都没问题才正式启动全面迁移的。后面做数据迁移和权限配置的时候也一直保留了测试环境作为沙盒每一步都先在测试环境演练一遍再上生产。3. 流程引擎适配把ServiceNow流程“翻译”成轻帆云流程3.1 流程梳理与拆解流程迁移是整个项目里工作量最大的一块也是最能体现“适配”价值的地方。ServiceNow的流程是基于它自己的工作流引擎流程定义和业务逻辑耦合得非常深直接导出来是没法用的。我们要做的事情是把流程逻辑从头梳理一遍然后在轻帆云的可视化流程设计器里重新搭建。我们把自己用的流程分成三类标准流程、特殊流程、废弃流程。标准流程是指像“故障报修”“服务请求”“账号权限申请”这类所有公司都会有的通用流程逻辑相对简单基本是提交、审批、分派、处理、关闭这几个环节。这类流程我们在轻帆云里重建的成本很低只需把表单字段和审批节点映射好就行。特殊流程是指带有我们公司自身业务逻辑的流程比如变更审批里要求超过一定影响范围的变更必须经过技术委员会评审比如机房设备维护工单必须自动关联到对应机柜的资产台账。这类流程必须逐个梳理把它们拆解成“触发条件 审批节点 节点操作 流转规则”四部分再到轻帆云里用流程设计器一步步搭出来。废弃流程最省事ServiceNow里有一些历史遗留的流程常年没有工单流转我们直接做下线处理不给新平台增加负担。这里特别提醒一个点流程梳理过程中一定要有业务部门的深度参与。我们一开始是ITIL管理员自己画流程图画完发给业务确认结果业务反馈回来一堆问题——某个节点的审批层级不对、某个字段的取值规则已经变了、某个环节其实早就应该取消了。后来我们调整方式改成跟各业务口的人坐到一起现场过流程有问题当场确认效率一下子提高了很多。3.2 轻帆云流程设计器的适配实现轻帆云的流程引擎底层基于Flowable支持BPMN 2.0规范这算是我们选它的一个重要加分项。因为团队里有人之前做过Flowable项目知道它的能力边界迁移的时候心里比较有底。具体到流程搭建上我们总结了几个比较重要的适配经验。第一个是节点类型的映射。ServiceNow里的审批节点会区分“需要所有审批人批准”“需要任一审批人批准”这类策略轻帆云里对应的就是会签和或签。这个映射一开始容易踩坑因为ServiceNow的一些审批场景是动态指定审批人比如金额超过1万要由部门总监审批不超过则由部门经理审批。这类逻辑在轻帆云里需要在审批节点的“审批人设置”里配置条件表达式不仔细做的话很容易出现审批人取错的低级问题。第二个是条件分支的表达。ServiceNow里判断条件时用的是它自己的脚本语法轻帆云则提供了比较直观的条件配置界面。我们迁移时会把ServiceNow里的脚本逻辑翻译成中文条件描述比如“申请天数大于3天时必须经过直属上级审批小于等于3天时自动通过”。翻译完之后再在轻帆云里配置对应的条件分支。这个过程比较琐碎但好处是流程逻辑变得更清晰了后续维护起来比看一堆脚本要轻松得多。第三个是超时处理机制。ServiceNow里我们配置了一些超时自动提醒的规则比如审批超过两天没处理就发催办通知。轻帆云是在流程节点的“超时设置”里配置时限和超时动作支持超时提醒和超时自动跳过两种方式。我们在迁移时统一配置成“先提醒、后升级”超过2天提醒一次超过3天自动升级到该审批人的上级。这套机制上线后明显减少了审批卡住的概率。3.3 表单适配从“大而全”到“够用就好”接下来聊聊表单。ServiceNow里我们用的不少表单是从平台的标准模板延伸出来的字段又多又乱。比如一个“服务请求”表单包含申请信息、审批信息、交付信息、满意度回访信息一共几十个字段实际填起来业务人员只关注其中十几个。轻帆云的表单设计器是拖拽式的字段类型、校验规则、布局都能灵活控制。我们借着这次迁移把所有表单做了一次“减法”每个流程的表单只保留业务真正需要的字段必填项严格压缩。比如“服务请求”表单我们就留了请求类型、影响范围、详细描述、期望完成时间这几个核心字段其他的要么去掉、要么挪到流程内部节点去填写。一开始业务部门有顾虑怕字段少了以后信息记录不全。我们解释清楚逻辑之后他们也理解了字段少了填单快、出错少而且流程内部节点的信息记录完全可以补足后续的执行过程信息。我做表单适配时还有一个心得轻帆云的表单字段可以设置“字段联动”比如选择了“硬件故障”分类之后自动带出“故障设备类型”的下拉选项。这种联动效果在ServiceNow里做挺麻烦的轻帆云里配置简单而且对降低业务人员的填写难度帮助非常大。迁移过来的表单凡是逻辑上存在父子关系的字段我们基本都做了联动。4. 数据迁移实操记录从导出清洗到校验上线4.1 数据导出与主数据映射数据迁移我们的策略先定了一个原则优先迁移在用的、可追溯的数据历史归档数据不回迁。基于这个原则真正需要迁移的数据量就小了很多。第一步是从ServiceNow里把所有需要的数据导出来。ServiceNow的表结构可以通过REST API查询但如果数据量大、表关系复杂建议直接用它的报表导出功能把每张表的数据导出成CSV或者Excel。我们当时是按模块导的——工单、变更、问题、资产、知识库、用户分别导出每次导出前都要核对筛选条件避免把一些测试数据也导进来。这里有个比较麻烦的问题就是ServiceNow里的状态值、优先级值、类别值是一套英文代码而轻帆云里我们需要配置成中文选项。所以要做一层枚举值映射表比如ServiceNow的State1New对应轻帆云的“新建”State2In Progress对应“处理中”State3On Hold对应“挂起”State6Resolved对应“已解决”State7Closed对应“已关闭”。这个映射表一定要在正式迁移前定好而且要经过业务确认因为状态值直接影响后续工单报表的统计口径。主数据映射主要是用户和资产两块。用户信息我们从HR系统拉了一份最新的在职员工名单跟ServiceNow里的用户字段做了匹配匹配不上的就单独列表让相关模块负责人确认。资产信息类似以CMDB系统里的资产台账为准把ServiceNow资产表里能对应上的关联到新台账上对应不上的标记为“历史遗留资产保留记录但不参与新的流程关联”。4.2 数据导入工具的使用与校验轻帆云提供数据导入模板直接在界面上就能下载Excel模板按照模板格式填好数据就能批量导入。这里要特别注意的是模板里的字段格式尤其是日期时间格式、用户字段的工号格式、多选字段的枚举值格式。我们第一次导入就吃了两个亏一个是日期格式。ServiceNow导出的数据里时间字段带着时区信息和毫秒数轻帆云的模板要求的是“YYYY-MM-DD HH:mm:ss”格式直接粘贴进去会校验失败。这个好解决在Excel里写个公式转换一下就行。提醒一下如果用了Lightning之类的工具做格式处理要注意别把时间给转成UTC又转错了时区。另一个是富文本字段。ServiceNow里工单的详细描述字段存的是HTML格式的富文本导入轻帆云时如果直接导入HTML字符串界面上显示的就是一大段带标签的源码而不是排版好的文本。我们后来是用Python写了个脚本把HTML转成纯文本再导入虽然丢失了部分格式信息但文本内容的可读性保留下来了业务人员看历史工单不至于一头雾水。导入完成之后校验这步绝对不能省。我们的做法是抽检全量比对结合抽检是按模块各抽几十条工单人工比对源系统和轻帆云里的字段值是否一致全量比对是用SQL把两个系统的核心字段分别导出再写脚本做对比确保记录数一致、关键字段无丢失。4.3 附件和历史工单的处理ServiceNow里存了一部分附件主要是工单里的截图、运维报告之类的文件。附件迁移我们用的方案很简单把附件从ServiceNow批量下载下来按“工单号_文件名”的规则重新命名然后通过轻帆云的附件导入接口挂到对应的工单记录上。因为附件总量不算大整个过程两天就搞定了。如果你们公司的附件量很大我的建议是不要一上来就做全量迁移先把近一年内有用的附件迁过去更早的按归档方式存到对象存储或文件服务器上在工单里留一个归档文件的访问地址就行。附件这事情业务部门实际查阅历史工单时很少会去翻一年以前的图片做全量迁移性价比不高。再补充一点ServiceNow里已经关闭的工单导过来之后在轻帆云里要设置成“只读”状态避免业务人员误编辑历史记录。轻帆云的工单权限可以按状态控制操作权限我们专门配置了已关闭工单不允许编辑、不允许删除只能查看和追加评论。5. 集成联调替换一个系统不是替换一个孤岛5.1 统一身份认证与权限模型适配ITSM平台不是独立存在的它跟公司内部的一堆系统都有交互。第一个要解决的就是身份认证。原来ServiceNow用的是独立的账号体系跟公司统一认证平台对接得不太好员工入职离职时账号开通和注销经常要IT运维手工处理又慢又容易漏。轻帆云支持标准的单点登录协议我们直接对接了公司现有的统一身份认证平台做到了员工账号自动同步、单点免密登录。这一步做完之后最明显的变化就是新员工入职当天就能直接访问ITSM提交工单不用再等账号开好员工离职后账号权限跟着统一认证平台一起回收不用再单独在ITSM里操作。权限模型这块ServiceNow里我们是按“用户角色模块可见性”控制的角色又分了很多种IT用户、服务台坐席、服务台主管、变更经理、资产管理员、系统管理员等等。轻帆云的权限控制方式也是基于角色的我们重新把这些角色在轻帆云里建了一遍并逐一核对每个角色的数据权限范围。这里特别要检查的是“数据范围权限”比如服务台坐席只能看自己处理过的工单还是可以看所有待分派的工单服务台主管要不要看全部门的数据。这些边界整理清楚再配权限不然上线后很容易出现越权查看的问题。5.2 邮件通知和待办集成的细节调整ITSM系统里通知功能是天天都要用的。ServiceNow里我们配置了一大堆邮件通知模板比如工单创建通知、分配通知、催办通知、完成通知、满意度调查通知等等。迁移到轻帆云后这些模板要重新做一遍。轻帆云的通知模板支持变量插入比如申请人姓名、工单编号、当前处理人、工单链接这些都能以变量形式动态生成。我们在适配模板时第一件事就是对照ServiceNow里在用的模板把变量逐一替换成轻帆云的变量语法。这步看起来简单但容易出问题的地方是变量取不到值导致邮件里出现空白或者乱码。上线前一定要用真实工单把每种通知都触发一遍确认变量都能正常取到值。还有一个比较实用的功能是“企业内部IM待办推送”。轻帆云有官方接口可以对接企业微信、钉钉、飞书这类协作工具工单审批待办可以直接推送到处理人的IM消息里。我们公司用的是企业微信这个集成做了之后审批人再也不需要打开ITSM网页去看待办了直接在企微里点链接就能处理工单平均处理时长肉眼可见地缩短了一截。5.3 与监控告警、自动化工具的打通ITSM的另一个价值是跟监控系统、自动化运维工具联动。比如监控系统发现某台服务器CPU持续告警会自动创建一张故障工单并分派给对应的运维负责人再比如某些标准化的账号申请需求可以通过脚本自动完成开通操作工单自动流转到“已解决”状态。ServiceNow里这些集成是通过REST API做的我们已经在用。轻帆云也提供REST API接口风格略有差异但整体对接起来工作量可控。我们当时重点打通了两个场景监控告警自动建单、标准请求自动开通。监控告警建单是在监控平台的webhook里加了一个轻帆云创建工单的调用自动开通则是写了一个Python脚本轮询轻帆云里状态为“待自动化处理”的工单执行开通操作后再调用API把工单状态改为“已解决”。这里有一个我在实施中踩过的坑轻帆云的API调用前需要先通过认证获取tokentoken有效期需要关注。写脚本时如果token过期了没刷新后续的所有API调用都会401报错。我们第一次跑监控自动建单时就是因为token过期没有主动刷新导致告警工单没有自动创建白白漏了几张单。后来我在脚本里加了token过期自动重取的逻辑顺便加了告警日志再没出过这个问题。如果你所在团队计划做类似的集成最好在联调阶段就让开发和运维的同学一起参与别等系统都切上线了才想起来对接。集成方案里的认证方式、接口限流、失败重试这些细节提前讨论清楚能省掉后面很多麻烦。6. 常见问题与排查技巧实录6.1 流程审批跑不动的三个典型原因上线之后的一两周我们接到了不少反馈说某些流程的审批在某个节点“卡住不动了”。排查下来发现最常见的原因有三个。第一个原因是审批人设置为空。流程设计时某个节点的审批人通过变量指定结果流程实例运行时该变量没有取到值审批节点就没有处理人。系统界面看起来就是流程静静地停在那里既不报错也不往下走。这个问题的根源多半是申请表单里的某个字段没有填写导致变量为空。我们后来在流程设计器里给这种节点加了一个兜底策略当审批人为空时自动转给该部门的服务台主管避免流程卡死。第二个原因是部门或角色的数据权限影响。轻帆云的审批人如果指定为“某个角色的所有人”那么该角色下每个人都能看到这条待办。但如果这个角色只配了一两个人而且这两个人刚好都不在系统里激活待办就会一直挂在那里。我们处理方式是在用户导入时做了全员预激活确保离职账号不影响角色对应的审批人集合。第三个原因是条件分支配置错误。ServiceNow里的有些流程条件是用脚本写的逻辑比较复杂我们翻译成轻帆云的可视化条件时偶尔会出现条件判断反了或者边界值理解偏差的问题。举个例子原来的逻辑是“影响用户数50需要总监审批”我们翻译时写成了“50”结果刚好50用户的变更单也要走总监审批链路流程路径跟原来不一致。这类问题只能靠测试流程覆盖来发现所以我们当时上线前准备了一份测试用例表把每个流程的每种分支情况都测了一遍。6.2 同步历史工单后查询变慢怎么办我们迁移完成后历史工单约几十万条直接导入到了生产环境的轻帆云实例里结果发现工单列表页的查询速度明显下降尤其是按“全部工单”维度查询时响应要好几秒。排查了一下原因是没有建好合理的索引。轻帆云的工单表默认索引可能只覆盖了主键、工单编号、状态这几个常用字段但我们的业务经常需要按申请人、处理人、创建时间、工单类型组合查询这几个组合没有对应索引数据库全表扫描自然就慢。解决方案是在工单表上补充了组合索引具体建了三个(处理人, 状态)、(申请人, 创建时间)、(工单类型, 创建时间)。建完索引之后再测试工单列表页查询基本都能在1秒内返回。如果你的历史数据量非常大建议迁移前就先评估好常用查询条件提前把索引建好避免上线后再临时调整。6.3 权限配好了但业务看不到工单怎么回事还有一个我们上线初期经常被问的问题“我明明被加到了这个角色里为什么打开工单列表还是看不到工单”这个问题的根源是轻帆云的权限模型同时包含了“功能权限”和“数据权限”。一个用户虽然有了“服务台坐席”的角色功能权限但如果他没有被分配到对应的“数据权限范围”比如“本组工单”或者“全部工单”列表页就是空的。排查方法是登录管理员后台打开该用户的角色详情看角色关联的数据权限范围是什么。我们当时为了让各角色快速上线把“服务台坐席”角色的数据权限范围默认配置为“仅本人处理工单”结果所有坐席都看不到待分派工单。后来调整成“本部门工单 待分派工单”问题才解决。所以给角色配权限时一定要把功能权限和数据权限分开理解功能权限决定“能干什么”数据权限决定“能看到哪些数据”。两者缺一不可。6.4 排查技巧速查表为了方便读者我把这次上线初期遇到过的问题整理成了一张速查表遇到类似情况可以先按表自查一轮。问题现象可能原因排查方向流程审批卡住不流转审批人变量为空、角色下无有效用户查看流程实例详情确认当前节点审批人工单创建后用户收不到邮件通知模板变量错误、用户邮箱未同步检查通知日志确认邮件模板变量是否有效列表页查询缓慢缺少组合索引、历史数据量过大检查数据库慢查询日志按常用条件补索引用户可以登录但看不到工单功能权限和数据权限未正确绑定确认用户角色是否关联了数据权限范围API调用返回401token过期未刷新检查token有效期增加自动刷新机制导入工单描述显示HTML源码富文本字段未做纯文本转换导入前用脚本将HTML转纯文本工单状态跟原系统对不上枚举映射表配置错误核对ServiceNow状态值与轻帆云状态值映射关系审批人收到了重复待办同一用户在多个角色下拥有同一工单权限在用户角色配置中优先主角色或调整通知去重规则7. 切上线和并行运行阶段的几个关键动作正式切换前我们做了两轮全面的回归测试。第一轮是测试团队按测试用例执行覆盖所有流程的正常路径、异常路径、权限边界和通知发送。第二轮是邀请各业务部门的核心用户做UAT测试让他们根据自己的实际工作场景在新系统里发起工单、走审批、查看报表把使用感受反馈回来。UAT阶段收集到的意见做了两轮迭代优化比如表单里增加了“加急”标记、工单详情页增加了关联工单的快捷查看入口等等。切换当天我们采用了“并行运行数据校验”的方式。轻帆云和ServiceNow同时对外提供服务但新工单一律在轻帆云里创建ServiceNow只保留查询历史数据的入口。每天下班前拉取两边的工单数据进行比对确认轻帆云里的数据完整、状态正确。并行运行持续了两个星期确认稳定后ServiceNow的入口正式下线所有用户全部切到轻帆云。这里多说一句并行运行阶段最怕的是两边数据不一致导致运维工作混乱。我们在执行时定了一条铁律如果同一张工单在两边都有记录以轻帆云的数据为准ServiceNow里的数据只做参考。规则定了之后服务台人员在并行期的工作方式就统一了没有出现“到底以哪边为准”的扯皮问题。8. ServiceNow和轻帆云的核心差异与选型建议借着这次迁移项目我们对两个产品做了比较深入的对比也整理了它们之间的核心差异供有计划做选型评估的朋友参考。从平台形态上看ServiceNow是典型的SaaS低代码平台功能覆盖面广适合大型企业构建复杂的IT服务管理体系但对实施团队的专业能力要求高后续运营成本也高。轻帆云更像是一个“开箱即用但可以深度定制”的ITSM平台核心流程和数据模型都符合ITIL规范同时支持流程设计器、表单设计器、报表自定义这类定制能力实施门槛低很多国内团队响应的速度也更快。从落地成本上看ServiceNow的订阅费用和定制开发成本都需要持续投入轻帆云则是一次性私有化部署加后续维护费用长期来看整体成本优势比较明显。尤其是当我们有国产化环境需求时轻帆云在这方面的适配度比ServiceNow好太多。如果你们公司目前也在考虑替换ServiceNow我建议先在三个维度上做一轮自我评估管理复杂度你们的ITSM流程是复杂到必须依赖一套强平台来管理还是用一套足够灵活的轻量平台就能覆盖定制化需求各业务模块的流程差异有多大是走标准加少量定制还是每个模块都需要深度定制成本和运营投入每年的订阅费用和原厂开发成本是否已经成为一个不可忽视的负担这三个维度评估完其实答案就比较清晰了。对大多数中大型企业来说轻帆云这类平台在性价比和实施周期上都有明显优势但如果是几千人以上的大型集团流程极其复杂、跨部门协同要求极高那么ServiceNow这样的大平台仍然有它的适用场景。根据我个人这次项目的体会系统替换真正决定成败的往往不是平台能力差异而是团队对流程的梳理能力和实施过程中的细节把控能力。磨刀不误砍柴工前期需求梳理越细致后面落地就越顺畅。这个项目完了之后我们运维团队顺手把知识库也迁到了轻帆云里跟工单系统做了关联现在业务人员提工单时可以直接引用知识库文章新同事处理工单时也能参考历史解决方案整个IT服务响应链条比以前顺畅了不少。