Name

sn_employee.ep_HRProfileSync

Description

Utility script include to sync fields from HR profile to employee profile. Used in event sn_employee.sync.hr.fields

Script

var ep_HRProfileSync = Class.create();
ep_HRProfileSync.prototype = {
  initialize: function() {
      this.fieldsToSync = ['employment_start_date', 'employment_end_date', 'work_phone', 'work_mobile', 'location_type', 'position_type'];
  },

  /**
   * For all employee profiles sync fields from HR profile 
   */
  syncFromHRProfile: function() {
      var hrProfiles = new GlideRecord('sn_hr_core_profile');
      hrProfiles.setLimit(1);
      hrProfiles.query();
      //Check if at least one HR profile exists.
      if (hrProfiles.next()) {
          var employeeProfileGr = new GlideRecord("sn_employee_profile");
          employeeProfileGr.addNotNullQuery("user");
          employeeProfileGr.query();
          while (employeeProfileGr.next()) {
              var hrProfileGr = this._getHRProfileGr(employeeProfileGr.getValue("user"));
              if (hrProfileGr && hrProfileGr.isValidRecord()) {
                  this.fieldsToSync.forEach(function(field) {
                      employeeProfileGr.setValue(field, hrProfileGr.getValue(field));
                  });
                  employeeProfileGr.setValue("hr_profile", hrProfileGr.getValue("sys_id"));
                  employeeProfileGr.setWorkflow(false);
                  employeeProfileGr.update();
              }
          }
      }
  },

  _getHRProfileGr: function(userId) {
      var gr = new GlideRecord("sn_hr_core_profile");
      if (gr.get("user", userId))
          return gr;
      return null;
  },

  type: 'ep_HRProfileSync'
};

Sys ID

5e397703c3363010069aec4b7d40dd4c

Offical Documentation

Official Docs: