Skip to content

Sync Worker Details Across Your Workspace

Every system should know what your HRIS knows.

The Problem

Worker details are spread across many systems: your HRIS, Entra, Slack, Salesforce, and more. When someone marries, when they are promoted and given a new title, or when they move departments, each individual system needs to be updated or it falls out of line. Handling that manually is slow, expensive, and error-prone.

Some teams write scripts to handle it. Those scripts are hard to audit, spread across teams, and require maintenance.

3.7% of manually keyed entries disagreed with the same result carried across automatically.
Mays and Mathias, Journal of the American Medical Informatics Association, 2019
Hana Rivera
ADP Workforce Now
MiMicrosoft Entra ID
By handHana Cole
With KlefHana Rivera
GoGoogle Workspace
By handHana Cole
With KlefHana Rivera
OrOracle Fusion
By handNo account
With KlefHana Rivera
AWAWS
By handHana Cole
With KlefNo account
OrOracle OCI
By handHana Cole
With KlefNo account
Manual data entry is prone to error and will inevitably drift.

Sync Driven by Policy

In Klef, your policies describe what each account should look like at each stage of a worker's lifecycle. Klef keeps every downstream account in sync in accordance to your instructions. You know exactly where your Entra user's title comes from.

policy "Directory profile" {
  category = "Company-wide"
  applies  = everyone
 
  stage active {
    target microsoft_entra.user {
      userPrincipalName = worker.business_email
      displayName       = worker.display_name
      givenName         = worker.legal_name.given
      surname           = worker.legal_name.family
      jobTitle          = worker.job.name
      department        = worker.department.name
      officeLocation    = lookup(table.sites, worker.location.code)
      manager           = worker.manager
    }
 
    target google_workspace.user {
      primaryEmail = worker.business_email
      givenName    = worker.legal_name.given
      familyName   = worker.legal_name.family
      jobTitle     = worker.job.name
      department   = script.title_case(worker.department.name)
      orgUnitPath  = lookup(table.org_units, worker.department.code)
      manager      = worker.manager
    }
 
    target slack.user {
      userName    = worker.business_email
      displayName = worker.display_name
      givenName   = worker.legal_name.given
      familyName  = worker.legal_name.family
      title       = worker.job.name
    }
  }
}

A Plan for Every Change

Every sync produces a plan: a list of each change Klef will make downstream. The plan can apply automatically or be set aside for review and approval.

Sync plan
Applied
41 added1,198 updated45 removed
Erin WalshAdded
MiMicrosoft Entra ID
mailerin.walsh@acme.co
departmentMarketing
GoGoogle Workspace
orgUnit/Marketing
Hana ColeUpdated
MiMicrosoft Entra ID
departmentSalesMarketing
MiMicrosoft 365
licenseE3E5
AWAWS
Nia BennettRemoved
MiMicrosoft Entra ID
MiMicrosoft 365