Skip to main content
FomiVIP
Service Cases

A CIIC Internal Form: Where We Got Stuck Was Single Sign-On

An internal form for CIIC took three days to build; single sign-on took two weeks. The protocol wasn't the problem — the same person had three accounts across three systems: employee ID, email prefix, mobile number. We made the email prefix the primary key, backed by a 200-plus-row mapping table.

January 25, 2019Single Sign-OnInternal SystemsIdentity Mapping

An internal data-collection form — plainly put, employees fill in a few fields, supervisors approve, and everything exports into a summary. The functionality took three days. What actually took two weeks was "how do people avoid registering yet another account?"

Three Systems, Three Sets of Accounts

The client was running three systems internally: an OA platform, email, and an HR-related system. The same person logged into OA with an employee ID, into email with an English-name prefix, and was bound to the HR system by mobile number. The form had to open embedded in OA — one click, straight in, with no second password.

Our first version keyed on employee ID, tested with a handful of our own accounts — no issues. The first real trial inside OA left 200-plus people unmatched: some had changed IDs when transferring departments, some were contractors missing from the HR database, and a group of rehired retirees had only email.

Skipping the Protocol, Building a Mapping First

We initially planned a standard SSO implementation, but one round of talks revealed the three systems came from different eras and different vendors — none of them could be changed on any short timeline. So we went with a deliberately dumb approach:

Use the email prefix as the unique primary key. Build an identity_map table with three columns — oa_id, mail_prefix, phone — plus a status field. Stitch together the rosters exported from the three systems, verify 200-plus rows by hand, and flag mismatches for HR to confirm; that batch held 30-plus entries.

The link embedded in OA carries an encrypted ticket. The form's backend decodes the mail_prefix from it, looks up the table for identity and role, and decides whether the user sees the fill-in page or the approval page. Tickets are valid for 5 minutes and single-use.

What Happened to the 30-Plus Unmatched Entries

HR spent three days verifying the entries flagged in the mapping table. Twelve were contractors absent from the HR database — given a separate "external personnel" role that could fill in but not approve. Eight were rehired retirees with email but no employee ID — attached via their email prefixes. The remaining dozen or so were name collisions, two "Zhang Wei"s, distinguished by the last digits of their phone numbers with department noted in the remarks.

That identity_map table was never deleted — it became something other client projects wanted to use. In 2021, when they launched a new system, they came straight to us asking whether the mapping could be reused. We handed over an export without changing a line of code. That's where the "dumb approach" beats standard SSO: anyone can understand it, and anyone can take it with them.

Those 5 Minutes on the Ticket

The 5-minute validity was found by trial. We started at 30 minutes and discovered during testing that someone left their OA page open through a meeting, came back, clicked — and the still-valid ticket took them straight into the form. The client felt that wasn't right. Shrinking to 5 minutes brought complaints that tickets occasionally expired the moment someone clicked — traced to OA caching old links. Both sides compromised in the end: 5-minute tickets, and the OA entry point regenerates on every click.

Single-use-then-dead is the one rule that never loosened. The logs recorded 3 replay attempts — the same ticket resubmitted — all rejected outright.

A Postscript

We called that project "the form" internally; the client called it "aligning the people first." Both names describe the same thing: functionality in three days, two weeks spent making people matchable across three systems. When quoting similar work later, we learned to ask first "how many sets of accounts do you have?" — more useful than asking how many fields. The table now holds 300-plus rows, maintained by HR themselves, exported quarterly to us for backup. Still CSV, still 7 columns — never changed.

The Approval Chain

The form itself was almost trivial: 8 fields, 3 pulled read-only from the HR system, 5 self-filled. On submission it finds the supervisor by department; the supervisor gets a to-do in OA, also password-free on entry. Approval records go into one table: who, when, approved or returned, remarks.

The export is an Excel with one sheet per department, 12 columns, for HR to check against.

Launch

It opened on January 25. In the first two days, 7 people couldn't get in — all missing from the mapping table; adding them fixed it. By week three HR was maintaining the table themselves, with an admin page logging every add, edit and delete.

We later joked with the client that a project named "the form" spent 80 percent of its time on a mapping table. They agreed — internally they'd already named it "aligning the people first."

Consulting · Free initial chat

Need advice for your scenario?

Tell us your business context and current systems, and we'll give an actionable approach.

Contact us

Mon–Fri 9:00–18:00 · We respond on business days within one business day.

WeChat (Business Only)
WeChat (Business Only)二维码

Scan and add our WeChat for consulting

Or fill out the requirements form