ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ServiceNow替代实战:轻帆云迁移的流程重构与数据治理

ServiceNow替代实战:轻帆云迁移的流程重构与数据治理 最近刚帮一家客户把跑了多年的ServiceNow整体替换成轻帆云从流程梳理、数据迁移到外围系统对接前后折腾了大概两个月。整个过程踩了不少坑也积累了一些比较实在的经验。趁热打铁整理一篇实践拆解给正在考虑同类替代方案的同学做个参考。先说结论ITSM平台的“替代”从来不是一个软件替换另一个软件那么简单它本质上是一次流程重构、数据治理、集成适配和人员习惯迁移的组合工程。ServiceNow功能强大但体系庞杂配置灵活但成本偏高很多企业实际用到的功能不到三成却要为整个平台的复杂性和许可费用买单。轻帆云这类国产ITSM产品的优势在于开箱即用、配置直观、国产化环境适配好但替代过程中最容易出问题的往往不是软件本身而是历史数据迁移、流程差异映射和旧系统集成的替代方案。1. 为什么选轻帆云来替代ServiceNow做替代方案选型时先要搞清楚一件事ServiceNow在你的环境里到底承担了什么角色哪些能力是真的在用哪些是闲置的。我这次接触的客户是一家上千人的科技公司ServiceNow用了五年主要承载事件管理、变更管理、问题管理和服务目录申请也接了企业微信和监控告警系统。但说实话很多高级模块比如说服务组合管理、战略组合管理这些一直处于“开了但没人用”的状态。1.1 ServiceNow的痛点很现实成本是最直接的推动力。ServiceNow按用户数和模块收费每年的许可费和维护费加起来是一笔不小的开销而且续费时涨价幅度不低。再加上实施和定制通常是合作伙伴来做后续任何一个流程调整都需要走服务商响应周期和费用都比较被动。另外一个痛点是国产化适配。如果企业有信创要求数据库要切换到达梦、人大金仓这类国产数据库服务器要用鲲鹏、飞腾这类国产芯片ServiceNow在这个方向的适配工作几乎没有成熟方案。轻帆云在国产化环境下的适配就顺畅很多无论是数据库、中间件还是操作系统层面都已经有现成的兼容清单和部署方案。1.2 轻帆云的优势不只是“便宜”选轻帆云不是因为价格低而是它的产品形态更适合这类业务场景。轻帆云内置了ITIL标准流程模板开箱就能跑通事件、问题、变更、发布这几个核心流程表单设计器、流程引擎、SLA计算都是可视化配置业务人员稍微培训一下就能自己调整流程不用每次都提需求等开发。它的流程引擎基于Flowable这个底层技术栈本身就是业界用得比较多的所以对后续二次开发和集成有比较成熟的生态支撑。而且轻帆云支持私有化部署数据完全在自己手里API接口也比较全接口文档写得清楚对接外部系统时不用靠猜。1.3 替代前先做一次“体检”我的建议是在正式替换前花一到两周做一次全面的现状盘点梳理当前ServiceNow上所有已上线的流程模块每个流程的实际使用频率是多少拉取近一年的工单数据分析各类工单的分布、时效和流转路径盘点ServiceNow上所有集成关系包括单点登录、邮件通知、监控告警、企业微信/钉钉等收集各业务部门对当前系统的吐槽点这些往往是替代过程中最需要优先满足的隐性需求这次客户盘点下来真正高频使用的就是事件管理、变更管理和服务目录问题管理模块一年就开了几十张单。这个结果直接决定了替代范围核心做透这三个模块问题模块先做基础迁移其他闲置模块直接不迁移。2. 流程适配与表单迁移别照搬要重构很多人做系统替换时最容易犯的错误是把旧系统的表单和流程原封不动搬过来。这其实是最差的方案。ServiceNow的表单模型和轻帆云差别不小强行一一对应会让两边都很别扭最后做出来的东西既不像是轻帆云又丢了ServiceNow的灵活性。2.1 流程设计先对齐ITIL模型先回到流程的本源去梳理而不是盯着旧系统看。事件管理要看的是事件从哪来、怎么分级、响应时效怎么算、谁负责解决、怎么关闭验证。变更管理要看的是变更怎么申请、风险等级怎么评估、审批链路怎么走、变更窗口怎么控制、失败怎么回滚。把这些业务问题理清楚之后再对照轻帆云的流程模板做映射。轻帆云内置的流程模板整体上是标准的ITIL模型但有几个地方需要特别注意事件单的状态流转ServiceNow的标准状态是“新建-进行中-已解决-已关闭”轻帆云的默认状态也类似但如果你自定义过状态流转需要仔细核对每个状态的触发条件和动作变更单的审批节点ServiceNow支持条件审批和动态审批人轻帆云同样支持但配置方式不一样需要重新配置一遍审批策略子流程方面如果旧系统里有“事件转问题”“问题转变更”这类联动轻帆云里需要通过触发动作或者脚本实现这是配置时需要提前规划的2.2 字段级映射是细致活表单字段迁移别指望一键导入。我这次做了一个字段映射表把ServiceNow的每个核心字段和轻帆云的字段做逐一对应。以下是事件管理模块的字段映射示例ServiceNow字段轻帆云字段迁移处理说明Number工单编号系统自动生成不迁移历史编号用原编号做关联记录Short description标题直接迁移Description详细描述直接迁移含HTML格式的做纯文本转换Category分类分类树需在轻帆云重建映射后迁移Impact影响度枚举值映射P1-P4对应1-4级Urgency紧急度同理Priority优先级根据Impact×Urgency组合重新计算Assignment group处理组同步组织机构后在轻帆云重建Assigned to处理人同上注意人员状态State状态按状态映射表转换Created on / Resolved on创建时间 / 解决时间直接迁移用于历史数据统计分析Close notes关闭说明直接迁移SLA响应/解决时限重算SLA记录历史超时状态保留这个映射表看起来简单实际操作时每个字段都有细节。比如Priority字段ServiceNow里有成熟的优先级矩阵表是根据影响度和紧急度二维计算出来的轻帆云也支持这个计算逻辑但矩阵数值要重新在系统里配一遍配置完还要拿历史工单去验证计算结果是否一致。再比如SLA这块ServiceNow里已经结束时长的工单迁移到轻帆云后SLA计时器是不能直接继承旧时间的我们需要在数据字典里增加“历史SLA状态”字段把历史工单的SLA达成结果以标签形式记录下来保证后续做报表统计时数据不失真。2.3 分类和字典数据处理分类字典是另一个容易翻车的点。ServiceNow里往往跑了两三年的分类树已经变得很乱有很多分类下面根本没有工单。不要直接迁移利用这次机会做一次分类树治理。我当时的做法是导出全部历史工单的分类使用情况统计每个分类的工单量然后按照“保留高频分类、合并相似分类、下线零使用分类”的原则重新整理分类树。整理后分类从原来的两百多个精简到八十多个处理人字段的展示和流程分支配置反而更清爽了。需要注意的是分类调整涉及报表口径变化迁移前要和运营团队确认新分类对应的历史统计口径。3. 数据迁移与历史工单处理数据迁移是替换项目里最耗时、最容易出问题的环节没有之一。用户不关心你流程配得多么合理他们最直接感受是我之前的工单还在不在历史记录还能不能查到3.1 历史数据迁移范围怎么定这里要分两个维度看时间范围和状态范围。时间范围上ITSM系统一般建议全量迁移核心工单因为工单是审计和回溯的重要依据。但那些已经归档三年以上的老数据可以考虑不进入生产环境而是打包存储在归档库通过单独的查询入口进行历史检索。这次客户跑下来近三年工单大概有十几万条直接全量迁入轻帆云一年以上的工单做归档存储既保证了一线人员高频查询需求又控制了系统数据量。状态范围上我强烈建议“已关闭”工单做全量迁移“进行中”工单通过手工方式在新系统中重建并标注延续关系。这是因为进行中工单的SLA计时、状态流转、关联子表在迁移后很容易出现数据不一致强行迁移会把小问题复杂化。我们这次的操作策略是把迁移前所有“进行中”的工单一律先做“关闭”处理关闭说明备注“系统迁移原工单号XXX后续跟踪转到新工单XXX”新系统中手动创建一张新工单做延续两头都能对上账。3.2 迁移实现细节轻帆云后台提供了数据导入模板支持Excel和CSV格式我们实际用的是轻帆云的开放API加脚本的方式来做批量导入。数据量到了一定规模页面导入不现实API方式更可控还能做断点续传和日志记录。具体做法是用Python脚本从ServiceNow的REST接口拉取历史工单数据做清洗转换后写入轻帆云的开放API。脚本核心逻辑不复杂但有几个关键点分页拉取数据每页500条避免一次拉太多导致服务端超时字典值映射统一在脚本里做比如Status字段的英文枚举值转成轻帆云的中文枚举值附件处理单独跑先批量下载旧系统附件再逐一上传到新工单记录关联关系所有工单迁移完成后做一次总数校验和数据抽样比对这里给一个简单的数据拉取示例import requests import json import time # 从ServiceNow分页拉取事件工单 def fetch_snow_incidents(user, password, instance, batch_size500): url fhttps://{instance}.service-now.com/api/now/table/incident offset 0 while True: params { sysparm_limit: batch_size, sysparm_offset: offset, sysparm_fields: number,short_description,description,category,impact,urgency,priority,state,assignment_group,assigned_to,sys_created_on,sys_updated_on,close_notes, sysparm_exclude_reference_link: true } resp requests.get(url, auth(user, password), paramsparams, verifyFalse) data resp.json().get(result, []) if not data: break yield data offset batch_size if len(data) batch_size: break time.sleep(0.5)实际迁移时还要注意拉取接口的鉴权、分页大小限制、字段引用关系解析都需要单独处理。引用字段如分配组、分配人拉出来是类似“a1b2c3d4e5f6g7h8”的sys_id需要在脚本里构建sys_id到组名、人名的映射关系后转换为实际名称再匹配轻帆云这边的目标对象ID。3.3 附件和关联关系迁移工单附件很容易被忽略但用户很在意。ServiceNow的附件存储在系统表里通过REST API可以下载文件名和内容类型都有记录。我们当时的做法是按工单号建目录下载全部附件后再通过轻帆云的API将附件绑定到对应工单。这里有个细节附件上传时最好保留原始文件名和时间戳避免用户下载后看到的是一堆乱码文件名。关联关系这块ServiceNow的“Related Records”功能可以关联变更、问题、发布等各类记录这种跨表关联在迁移时需要额外注意。轻帆云也支持关联工单但关联类型不一样。我的建议是迁移时统一把关联关系转换成“备注说明关联链接”的方式处理即在该工单的描述或备注里写明“关联的变更单C123456已同步迁移新编号为CHG20240001”这样不丢失关联线索又不需要为每一种关联类型做专门的字段映射。4. 系统集成与应用配置一体化适配方案ITSM平台从来不是孤岛系统ServiceNow周边通常接了一堆上下游系统。替代过程中这些集成的适配和切换往往比TSM本身更费功夫。4.1 集成架构的适配思路客户环境里的集成关系主要有几类企业微信审批通知和移动端处理监控告警系统自动建单统一身份认证的单点登录CMDB配置管理系统邮件网关的通知收发替代ServiceNow之前这些系统全部通过ServiceNow的REST API或者事件接口对接。切换到轻帆云后需要把接口地址、鉴权方式、报文格式逐一做适配。轻帆云提供了一套比较完整的开放API覆盖了工单的创建、查询、更新、删除和附件管理等操作也支持Webhook主动推送事件这对接监控告警和企微通知够用了。我们当时是把一套本来发给ServiceNow的告警JSON报文通过轻帆云API的映射规则转成新格式。下面是一个简单的事件创建接口调用示例import requests import json def create_incident(base_url, token, payload): url f{base_url}/api/itsm/incident headers { Content-Type: application/json, Authorization: fBearer {token} } resp requests.post(url, headersheaders, datajson.dumps(payload)) if resp.status_code 200: return resp.json() else: # 记录失败日志并重试 print(f创建失败: {resp.status_code}, {resp.text}) return None4.2 移动端与企微适配现在企业内部办公移动端处理工单是很高频的场景。ServiceNow自己的移动端产品体验很一般客户实际上是把服务入口接在了企业微信上。轻帆云这一块做得还算顺手有现成的企微集成应用配置好Corp ID、AgentId和Secret之后审批消息、工单通知可以直接推送到企微处理人可以在企微里直接审批和处理。这里有个关键的适配点企业微信的审批模板和TSM系统的审批节点要做一对一联动。你需要在轻帆云里配置好每个审批节点触发时推送的企微消息模板同时在企微管理后台配置好对应应用的可见范围确保工单处理人能够收到并且能打开。我们当时踩过一个坑企微应用上线后有些用户收到通知但打不开页面排查下来是可见范围没有同步新系统的组织架构用户在企业微信里看到应用但因为没有授权无法访问调整可见范围后恢复正常。4.3 数据库与国产化环境适配客户由于有国产化要求数据库用的是达梦中间件用东方通TongWeb部署在鲲鹏芯片的服务器上。轻帆云在这块做了适配但部署过程还是有几个要注意的细节。首先是数据库驱动问题。轻帆云底层的Flowable引擎在达梦上运行时需要确认使用的数据库驱动版本和达梦数据库版本兼容。我们实际用的达梦8驱动是dm-jdbc-18。Flowable的建表脚本需要执行达梦版本的SQL脚本不能用MySQL或Oracle版直接跑会导致字段类型不兼容的问题。其次是小写表名问题。达梦数据库默认的表名大小写敏感度配置和MySQL不一样轻帆云部署时如果遇到“表或视图不存在”的报错优先检查初始化脚本执行时使用的Schema和登录用户是否一致以及大小写模式是否配置正确。再有就是JVM参数和字符集。国产化环境里中文字符集问题很容易踩坑设置应用启动参数时加上“-Dfile.encodingUTF-8”数据库连接串里配置characterEncodingutf-8能避免绝大多数中文乱码问题。5. 流程引擎与工作流配置的二次适配轻帆云内置了基于Flowable的工作流引擎这既是优势也是需要花心思的地方。Flowable是开源的生态成熟网上能查到大量资料。但正因为灵活度太高配置不当容易把自己绕进去。5.1 流程定义的设计原则在轻帆云里配置流程我总结的经验是能用“标准流程模板”解决的就不要画复杂的分支网关。ServiceNow老用户的习惯是每个部门一个流程变体最后整个系统里挂了上百个流程版本维护成本极高。这次配置时我们做了一个“一个流程多套策略”的做法同一类工单共用一个流程定义通过表单字段的取值的不同来控制审批人、SLA时限和可见字段。比如变更管理里低风险变更走快速审批直接上级审批即可高风险变更走变更咨询委员会审批需要多级审批和指定角色审批这些配置在轻帆云的流程设计器里通过条件分支实现而不是拷贝出多个流程版本。这样一个流程的调整只改一处全局生效维护成本大大降低。5.2 审批链路与业务角色的映射审批是TSM系统里使用频率最高的功能也是最容易在迁移过程中被吐槽的。ServiceNow的审批人配置方式与轻帆云不同ServiceNow用的是“审批组”结合“动态审批人”的逻辑轻帆云更多是基于“角色人员部门主管”这套配置逻辑。实际操作中我们先把客户的组织架构和人员角色梳理清楚导出一份角色清单把ServiceNow里的审批组逐一映射到轻帆云的审批角色。这里要特别注意的是“上级主管”这种动态审批人逻辑轻帆云支持“发起人的部门主管”作为审批人但前提是用户的部门信息要在组织架构里维护好。客户之前有部分人员部门为空导致审批流“卡住不动”最后逐条补全人员部门数据才解决。5.3 Flowable的高级扩展场景如果标准流程不满足要求轻帆云也支持通过Flowable脚本任务和监听器做一些自定义扩展。比如在工单创建时自动把工单编号同步到外部资产系统这个可以通过配置一个流程后置脚本实现。实际经验是能用配置解决的就别写脚本脚本越多后续升级系统时兼容性问题越大。我们这次只在两个地方用了脚本一个是在事件转问题时自动复制关键字段另一个是在变更关闭时自动把变更结果回写外部机房管理系统。两处脚本都做了充分的异常捕获避免因为外部系统不可用而导致主流程中断。6. 常见问题与排查技巧实录整个替换过程中遇到了一堆问题挑几个典型的说说基本都是不看一眼根本发现不了的那种。6.1 工单编号断号问题替换后第一个星期用户反馈工单编号跳号严重看起来像是“丢单”。实际上不是丢单而是轻帆云的编号规则和ServiceNow不同。ServiceNow的号码是通过前缀加序列号生成的比如INC0010001轻帆云也有自己的流水号机制但初始值需要手动设置。当时我们导入历史工单时没有把当前计数器调整到历史编号之后导致新单还是从INC0000001开始生成和导入的历史工单编号撞号。用户在列表页看到两个一模一样的单号就以为出现数据丢失。解决办法是在导入完成后手动修改编号计数器把起始值调整到历史数据最大编号往后顺延。轻帆云后台管理里可以设置编号规则和起始值改完后新单编号就连续了。这个操作看起来简单但很容易被忽略提醒做数据迁移的朋友一定记得处理。6.2 企微通知没触发有一次配好企微通知后工单流转到审批节点审批人却收不到企微消息。排查了半天发现问题出在通知事件的配置上而不是企微配置上。轻帆云里通知消息的触发需要明确绑定到流程节点的事件上比如“进入审批节点时触发”“工单状态变更为已解决时触发”。我们当时只配置了“提交”事件的通知但没有配置“进入审批节点”的通知导致工单流转了但没人收到提醒。这个在流程设计器里补上对应节点的消息触发即可。另外还要注意企微通知里如果带了工单链接链接域名必须是用户从企微里能访问到的域名不能是内网IP否则用户在手机端打不开。6.3 SLA超时数据不准替换后第一个月的SLA报表出来发现数据明显偏高很多工单显示SLA超时但实际处理时间并不长。排查下来问题出在SLA的计算逻辑上。轻帆云默认的SLA计算是从工单创建时间开始到工单解决时间结束中间不扣除暂停时长。但ServiceNow里之前配置了“等待用户反馈”暂停计时很多工单在“等待用户”状态下是不计时的。迁移后这个暂停规则没有配好导致所有含等待阶段的工单都被算成超时。解决办法是在SLA策略里配置“暂停条件”把“等待用户反馈”“等待第三方厂商”等状态设置为暂停计时状态。配置后重新统计数据就正常了。6.4 历史数据导入把附件弄丢数据迁移过程中有个细节ServiceNow导出附件时附件记录里有“文件名”和“内容类型”但通过API下载时文件名容易变成一串数字ID。导入轻帆云时如果不把原始文件名还原用户看到的附件列表全是数字命名的文件体验很糟。这里要写一个附件元数据映射下载附件宝时同时保存sys_attachment表的file_name字段上传到轻帆云时用API的“文件名”参数显式指定。这个小细节不处理的话等用户开始翻历史工单时就会来吐槽你。6.5 常见问题速查表问题现象排查方向解决方案导入历史工单后新单编号重复编号计数器设置修改编号规则起始值顺延到历史最大编号之后企微审批通知收不到消息触发事件配置在流程节点上补充“进入节点”的消息触发配置SLA超时数据虚高暂停计时规则缺失在SLA策略中配置等待用户反馈等暂停状态附件文件名全是数字附件元数据映射没做下载时保存原始文件名上传时显式指定达梦环境启动报“表或视图不存在”Schema或大小写配置问题检查建表脚本执行用户、Schema和大小写敏感配置审批流“卡住”不流转审批人识别失败检查人员部门、角色是否维护完整上级主管是否配置工单提交后门户看不到服务目录权限未配置检查服务目录的分类可见范围和申请权限通知链接打不开地址配置问题确认企微通知中的应用地址是外网可访问域名而非内网IP这些问题里有几个我们实际花了不少时间才定位其中审批链路卡住和SLA数据不准这两个尤其容易被误判成系统bug其实都是配置层的细节问题。替换系统时建议提前准备好一套配置checklist把这类易错项一条一条过能省去很多反复沟通的时间。我个人在实际操作中最大的体会是ServiceNow替代项目真正的工期大头不在系统部署和基础配置上而是在历史数据清洗和流程差异映射上。系统的标准功能可以快速搭起来但老系统积累了三五年的数据质量和业务习惯才是真正需要花时间的部分。轻帆云的开放性和可配置度足够支撑一套完整的替代方案关键是实施团队要对业务和流程有足够深入的理解而不是只盯着功能开关。最后再分享一个实用小技巧所有替换类项目正式割接前一定要做两次完整的演练。第一次演练是把环境恢复到一个干净的、模拟数据全部导入好的状态让核心用户按照日常操作跑两天收集反馈第二次演练才是真正的割接演练要求所有操作步骤按照既定checklist走并且把过程中每项操作的耗时时长记录下来。两次演练跑下来正式割接时基本可以做到不慌不忙。这个习惯我在多个替换项目里验证过非常有用。
返回列表