
HR软件系统如何打通OA、ERP?一位老技术人的实战手记
说实话,每次听到“打通系统”这四个字,我头皮都有点发麻。这不是一个小的项目,更不是装个插件点个按钮就能完事的活儿。你面对的可能是一堆七八年前甚至更老的系统,代码没人敢动,文档要么缺失要么过时,各个部门还都有自己的小算盘。HR想要人员数据联动,财务在ERP里眼巴巴等着工资表,OA那边又在催流程审批。怎么搞?这事儿没法一蹴而就,得一步一步来,还得带点“和稀泥”的艺术。
第一步:先搞清楚自己家的“家底”
别急着去研究什么API,也别忙着问开发商要技术文档。先得自己坐下来,拿出纸笔(或者打开Excel),把现在的系统情况摸清楚。这听起来像废话,但我见过太多项目一开始就冲着“高大上”的技术去,结果最后连最基本的账号对应都搞不定。
你需要画一张图,或者做一个简单的表格,把现有的系统都列出来。重点看几个方面:
- 系统是谁家的? 是买的商业软件(比如用友、金蝶、SAP),还是早年内部开发的“祖传代码”,或者是一些零散的Excel+VBA宏?不同的来源,对接的难度是指数级增长的。
- 数据存在哪儿? 数据库是公开的(MySQL, Oracle)还是被厂商封装得死死的?有些老系统,除了开发商自己,谁也别想直连数据库。
- 有没有现成的接口? 新一点的系统通常都有RESTful API或者Web Service。老系统可能只支持文件导入导出,甚至只能屏幕抓取。
- 业务主脑是谁? 这一点特别重要。虽然我们是做技术的,但HR系统、ERP、OA,每个系统的“主人”是谁,他们对数据的理解和需求是什么,必须得搞明白。不然你打通了数据,业务方说“这不是我想要的”,你就得返工。
这个阶段,别怕丑,把所有信息都摊在桌面上。可能你还会发现,公司里居然有三个不同的“人员信息表”,分别掌握在HR、行政和IT手里。

想明白到底要“打通”什么
“打通”这个词太笼统了。你需要把它拆解成具体的业务场景。所有不以解决具体问题为目的的系统打通,都是在浪费服务器资源。
你得拉着业务部门,或者自己以业务身份去思考,到底哪些场景需要这几个系统联动?
- 入职流程: 员工在OA里提交入职申请,审批通过后,HR系统自动生成员工档案,ERP自动生成工号并开通信访、门禁权限。这是典型的OA驱动HR和ERP。
- 薪酬核算: HR系统里的考勤数据(迟到、早退、加班)需要同步给ERP的薪资模块;ERP里的绩效系数,可能需要回填到HR系统作为年终奖依据。这是HR和ERP双向数据流动。
- 组织架构变更: OA里调整了部门架构,HR系统需要相应调整汇报关系,ERP里的成本中心也要跟着动。这是OA驱动HR。
把这些核心场景列出来,排优先级。通常建议从“入职”或者“离职”这种高频、标准化程度高的流程入手。理由很简单,这两个流程涉及的数据新增和变更最多,收效最快,能给项目带来正向反馈。千万别一上来就搞什么复杂的薪酬逻辑,那个坑太深,容易把项目信心搞没了。
技术选型的“现实主义”
到了技术层面,很多人容易陷入“技术崇拜”。看到Dubbo、Kafka、微服务就兴奋,但对于我们这种打通存量系统的活儿,往往“老土”的方法最管用。

目前主流的对接方式,大概有这么几种,我帮你分析下利弊:
| 对接方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| API接口调用 | 现代系统,厂商提供标准API | 实时性强,数据准确,双向交互 | 对系统性能有要求,接口不稳定很头疼 |
| 数据库中间表/视图 | 老系统,厂商不开放接口但能访问数据库 | 实施快,绕过了系统逻辑 | 破坏封装性,容易漏掉业务逻辑,风险高 |
| 文件交换 (CSV/XML) | 跨网络隔离,实时性要求不高 | 最简单,安全,兼容性好(对付老系统利器) | 实时性差,数据清洗麻烦,容易出错 |
| RPA(机器人流程自动化) | 完全没接口,老掉牙的C/S程序 | 不用动原系统,像人一样操作界面 | 维护成本高,UI一变就废,稳定性一般 |
我的经验是,文件交换和中间表依然是企业级应用中最“坚挺”的。很多人看不上这种“笨办法”,但它可靠。比如让HR系统每天凌晨导出一个CSV文件到FTP服务器,ERP系统定时去拉取并解析。这个过程虽然不实时,但对于大多数非实时审批场景足够了。而且,一旦出问题,查日志、改数据都很方便,直接改文件重传就行。
如果是现代SaaS系统,比如HR用了北森、Moka,OA用了钉钉、飞书,那API就是首选。现在的SaaS厂商API做得都不错,有一套认证体系(OAuth2.0)。这里要注意一点,SaaS厂商的API通常有频率限制,别疯狂调用,做好缓存和异常重试机制。
中间件是“和事佬”
如果系统比较多(超过3个),直接点对点调用会变成一团乱麻。A调B,B调C,C又回传A。这时候,一个“中间人”就很重要了。企业服务总线(ESB)或者消息队列(MQ)就是干这个的。
但我不建议一上来就上重型的ESB,那种东西通常是给大型企业搞治理用的。对于大多数打通场景,一个轻量级的集成平台(iPaaS)甚至一个简单的自研“中转服务”就够了。
核心思路是:所有系统不直接对话,都跟这个“中转服务”说话。
- A系统(HR)把“张三已入职”的消息发给中转服务。
- 中转服务记录下来,然后推送给B系统(OA)和C系统(ERP)。
- B和C处理完反馈给中转服务“成功/失败”。
这样做的好处是解耦。哪天你要换ERP,只需要让中转服务对接新ERP,HR和OA完全不用动。这就像你换了手机号,但微信没换,朋友不用更新你的通讯录。
数据治理:打通路上的拦路虎
技术打通了,数据流动了,你会发现一个更绝望的问题:数据根本对不上!
这是最痛苦的阶段,也是最考验耐心的阶段。HR系统里的“软件研发部”,在OA里可能叫“研发部”,在ERP里又成了“R&D”。更别提员工姓名里的空格、全半角符号、简繁体这些了。
建立“主数据管理(MDM)”机制是根本解决方案,但这个工程太大。在做系统对接的项目中,我们通常采用“谁干活,谁负责清洗”的土办法。
通常做法是,定义一个“黄金数据源”。一般员工主数据,以HR系统为准;组织架构,以OA(或者组织部定的)为准;成本中心和薪酬,以ERP为准。
当数据从HR流向ERP时,中间必须有一层“清洗和映射”逻辑。比如:
- HR传来“张三”,身份证号是`123456`。
- ERP系统里查一下,有没有身份证号`123456`?有,直接关联,姓名按ERP里的改(防止HR手抖写错)。
- 如果没有,再根据姓名、工号去模糊匹配。
- 如果还找不到,就当作新员工创建。
这个逻辑写起来很繁琐,需要大量的异常处理。而且,你需要一个可视化的界面,让管理员能方便地处理“未匹配”的数据。千万别让这种异常数据卡死整个流程,一定要设计“死信队列”或者“人工干预台”。
还有时间格式的问题。这是另一个经典的坑。OA里的时间可能是“2023/10/27”,ERP里要“2023-10-27 00:00:00”,HR系统里存的可能是时间戳。在做数据流转时,格式转换是一定要加的,而且要在文档里写清楚,以免将来背锅。
身份认证与权限的“暗礁”
除了数据,打通的另一个大头是“人”。也就是单点登录(SSO)和统一权限。
当员工在OA里点击“审批考勤”,直接跳转到HR系统的审批页面,而且不需要再次登录。这个体验是“打通”的直观体现。
技术上,现在基本都走SAML或者OIDC协议。OA作为身份提供方(IdP),HR作为服务提供方(SP)。这个技术不难,各大平台都支持。难点在于。
很多老旧的ERP或者HR系统,根本不支持SSO。这时候怎么办?
- 应用网关:在前面挂一个网关,由网关统一做认证,然后网关用“内置账户”去登录后端老系统(头像模拟登录或者Cookie注入)。这是典型的“骗”过老系统。
- 用户名/密码托管:IT部门维护一套账号密码,用户通过统一门户进去后,系统在后台帮他把账号密码填好登录。这种体验稍差,但也是一种妥协。
权限映射也是个头疼事。HR系统里你是“薪酬专员”,到了ERP里你可能是“财务审核员”,到了OA里又是“普通员工”。如果要维护三套权限非常痛苦。理想状态是RBAC(基于角色的访问控制),在中台维护一套角色,然后同步到各个系统。但鉴于国内软件的复杂性,大部分公司最后还是采用“影子账户”,即在每个系统里建立同名账户,然后通过脚本定期对齐权限。
实施过程中的“人情世故”
写了这么多技术,其实真正决定项目成败的,往往不是代码,是人。
做系统对接,本质上是在动别人的奶酪,或者在改变别人的习惯。
HR部门可能会担心,系统打通后,数据透明了,会不会增加她们的工作量?财务部门可能会担心,ERP的数据直接被外部系统调用,安不安全?OA的管理员可能会觉得,你们天天调我的API,会不会搞崩我的OA?
所以,沟通和文档非常重要。不是那种几十页没人看的需求文档,而是简单的流程图和接口说明。让业务方看得懂,让运维觉得稳。
还有,一定要做灰度发布。不要一下子把所有员工的数据都打通。先找几个试点部门,或者只先导入职流程,或者只先做“只读”同步。一点一点加功能,让大家有适应过程,有问题也能及时止损。
我曾经见过一个项目,因为半夜上线全量同步,结果ERP那边因为脚本Bug把测试环境的数据覆盖了生产环境(虽然概率低,但确实发生了),导致全公司一个月的工资重算。从此我养成了一个习惯:任何涉及核心数据的变更,必须有回滚预案,必须在非高峰期操作,必须有人盯着监控。
最后的思考
HR系统对接OA、ERP,是个永远在进行时的过程。没有“一劳永逸”的方案。随着公司发展,旧系统会被替换,新系统会加入,业务流程也会调整。
我们能做的,是在设计之初就考虑到扩展性。尽量把“通读”的逻辑做软一点,把“写入”的权限控制严一点,把异常处理想得全面一点。去接受那些不完美的妥协,去适应那些老旧的系统,去理解那些焦虑的业务人员。
系统是死的,人是活的。打通IT系统,其实也是在打通公司内部的信息孤岛,疏通人与人之间的协作壁垒。这个过程虽然痛苦,但当你看到OA里的入职单自动在ERP里生成了账号,员工不用重复填表时,还是挺有成就感的。这大概就是我们这些做技术的,一点小小的“匠人精神”吧。
蓝领外包服务
