# Technical Manuals

List of Technical Manuals e.g. Employee Data Import Process.

# Technical Manual - Employee Data Import Process

## INTRODUCTION

The Signify System is not always the primary source of employee data and information needs to be imported from other sources. This document describes the employee data import process used by Signify Software to import and maintain employee information received from different sources using a number of import methods.

## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>IMPORT PROCESS METHODS

The employee data received from the client, will always be imported into a *staging table* first and then written into the Signify system. A number of stored procedures are executed once the information is in the staging table, to complete the import process.

All the import methods mentioned below, except the Excel Spreadsheet Template Import, can be scheduled to occur daily (even more than once a day), weekly or monthly as per the client’s requirements.

## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>1. EXCEL SPREADSHEET TEMPLATE IMPORT

<div data-step-uuid="ea7adb03-3ef9-429b-b38f-cc3e7aa0b647" id="bkmrk-a-comma-delimited-cs"><div>- A comma delimited CSV file that can be imported via the existing front-end import system functionality.
- This approach is used to: 
    - Receive employee data from a client in an Excel spreadsheet.
    - Do tests and validations on the correctness of the employee data received.
    - Do a once off import of employee data to confirm the data, fields etc.
    - Schedule the automatic import.
- The client captures the information in the standard Signify Excel employee import template and sends the information to Signify.
- The import sheet layout has to be exactly the same as defined in the detail layout of the Excel template file described in the “Excel Import Template Layout” section.

</div></div>## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>2. SIGNIFY IS PROVIDED WITH A VIEW INTO THE CLIENT'S DATABASE

<div data-step-uuid="546c84ae-160b-46ff-87b0-7404ce5f7a31" id="bkmrk-client%E2%80%99s-it-to-popul"><div>- Client’s IT to populate view or staging table on the client’s database.
- A scheduled automated job will import the data from the client’s database into the Signify staging table.
- The standard import process will be followed.

</div></div>## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>3. CLIENT PLACES DATA FILE ON A FTP SERVER

<div data-step-uuid="da1e34ef-6c8c-4b30-bc7e-16849bfaeab2" id="bkmrk-signify-to-provide-l"><div>- Signify to provide layout format for import data file.
- Signify to create a secure location for FTP files.
- Client initiates a push action and creates a data file on the FTP Server.
- A scheduled automated job will import the data from the client’s FTP data file into the Signify staging table.
- The standard import process will be followed.

</div></div>## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>4. CLIENT PLACES DATA DIRECTLY INTO THE SIGNIFY DATABASE

<div data-step-uuid="3c885bdc-3b8c-48bd-96a3-c90e14f34246" id="bkmrk-signify-to-provide-l-0"><div>- Signify to provide layout format for the Signify staging table.
- Signify to assign secure access to the Signify staging table.
- Client import data directly into the Signify staging table.
- A scheduled automated job will import the data from Signify staging table and the standard import process will be followed.

</div></div>## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>5. SIGNIFY READS DATA FROM THE CLIENT'S ACTIVE DIRECTORY

· Client to provide Signify with Active Directory login details.

· Signify to verify that they can connect to Active Directory.

· Client to specify what information should be sourced from Active Directory.

· A scheduled automated job will import the data from the client’s Active Directory into the Signify staging table.

· The standard import process will be followed.

## 6. CLIENT SENDS THE DATA TO THE SIGNIFY API

· Signify provides the client with the API URL and credentials.

· Client sends the data to the API endpoint which will populate the staging table.

· Client to specify what information should be sourced from Active Directory.

· A scheduled automated job will import the data from Signify staging table and the standard import process will be followed.

## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>TYPICAL IMPORT PROCESS DIAGRAM

The process below is a diagrammatical representation of typical processes which can be followed to import client data.

<div data-step-uuid="0294ba09-38bc-4979-8dca-e564b9bcfd0b" id="bkmrk-"><div></div><div>![](https://media.screensteps.com/image_assets/assets/000/521/985/original/c9b0e374-017e-4b6a-b2d1-0360c478d7a9.png)</div></div>## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>IMPORT FILE LAYOUT

The employee data import template layout is described below.

<div data-step-uuid="c68e3055-7554-487d-9659-be8e45d2fa4c" id="bkmrk--0"><div></div><div>![](https://media.screensteps.com/image_assets/assets/000/521/987/original/843fec0f-8cd2-4dbf-be16-bfcf3cbe4ff2.png)</div></div><div id="bkmrk-field-name-mandatory"><table><thead><tr><td>**Field Name**</td><td>**Mandatory / Recommended**</td><td>**Default Value if Not Provided**</td><td>**Format**</td><td>**Max No Characters**</td><td>**Comments / Validations**</td></tr></thead><tbody><tr><td>EmployeeNumber</td><td>Mandatory</td><td> </td><td>Alphanumeric</td><td>50</td><td>No spaces in front of the number.  
This number will be used to create the employee’s username for logging into the system.  
Number must be unique per employee.  
Can be omitted if setting is active within Signify HR to automatically generate employee numbers.</td></tr><tr><td>Surname</td><td>Mandatory</td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>FullName</td><td>Mandatory</td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>MaidenName</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>KnownAs</td><td> </td><td>= FullName</td><td>Alphanumeric</td><td>500</td><td>This field will be displayed on most reports and screens.</td></tr><tr><td>Initials</td><td> </td><td> </td><td>Alphanumeric</td><td>20</td><td> </td></tr><tr><td>ID</td><td>Recommended</td><td> </td><td>Alphanumeric</td><td>50</td><td>Populate with either a national ID number, an employee number or ensure a passport number is provided in the passport field</td></tr><tr><td>TelNoW</td><td> </td><td> </td><td>Alphanumeric (+## ## ### #### )</td><td>200</td><td rowspan="3">Numbers not in the specified format will be imported as a whole and not split into code etc.  
(+27-12-345678 format only)</td></tr><tr><td>TelNoH</td><td> </td><td> </td><td>Alphanumeric (+## ## ### #### )</td><td>200</td></tr><tr><td>CellNo</td><td> </td><td> </td><td>Alphanumeric (+## ## ### #### )</td><td>200</td></tr><tr><td>Email</td><td>Recommended</td><td> </td><td>Alphanumeric</td><td>200</td><td> </td></tr><tr><td>EmpTitle</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td>All values used here will be made part of the master data tables. Therefore ensure these values are correct if completed.</td></tr><tr><td>Location</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>OrgLevel1</td><td>Recommended</td><td>COM</td><td>Alphanumeric</td><td>100</td><td>This is the highest level in the company.  
The Org Code must be unique across all org levels.</td></tr><tr><td>OrgLevel1\_Description</td><td>Mandatory</td><td>Company</td><td>Alphanumeric</td><td>500</td><td>This is the highest level in the company, usually the group/company's name.</td></tr><tr><td>OrgLevel1\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>4000</td><td>Values inserted in this field will also be populated in the Master Data for the Address Region.</td></tr><tr><td>OrgLevel1\_Province</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td>Values inserted in this field will also be populated in the Master Data for the Business Address Province.</td></tr><tr><td>OrgLevel2</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td><td rowspan="32">Only org level 1 is mandatory. Levels 2 to 9 are optional and are to be used only if needed.  
For each level (1-9) in the organisation structure: An arbitrary (unique) code as well as name/description for the node of the position within which the employee is appointed.  
If no code is provided, a code is automatically generated by the employee import process.  
If the combination of levels do not comply to the organisation structure rules (e.g. Level 2 can exist within Level 1, Level 4 can exist within Level 3 or Level 2, etc), the record will be rejected.  
The same Organisation Node Code cannot be used in multiple Organisation levels or locations - i.e. the organisation node code per node must be unique within the file</td></tr><tr><td>OrgLevel2\_Description</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel2\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>4000</td></tr><tr><td>OrgLevel2\_Province</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel3</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td></tr><tr><td>OrgLevel3\_Description</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel3\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>4000</td></tr><tr><td>OrgLevel3\_Province</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel4</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td></tr><tr><td>OrgLevel4\_Description</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel4\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>4000</td></tr><tr><td>OrgLevel4\_Province</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel5</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td></tr><tr><td>OrgLevel5\_Description</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel5\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>4000</td></tr><tr><td>OrgLevel5\_Province</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel6</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td></tr><tr><td>OrgLevel6\_Description</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel6\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>4000</td></tr><tr><td>OrgLevel6\_Province</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel7</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td></tr><tr><td>OrgLevel7\_Description</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel7\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>4000</td></tr><tr><td>OrgLevel7\_Province</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel8</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td></tr><tr><td>OrgLevel8\_Description</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel8\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>4000</td></tr><tr><td>OrgLevel8\_Province</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel9</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td></tr><tr><td>OrgLevel9\_Description</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>OrgLevel9\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>4000</td></tr><tr><td>OrgLevel9\_Province</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td></tr><tr><td>Birthday</td><td>Recommended</td><td>1900/01/01</td><td>YYYY/MM/DD</td><td>500</td><td> </td></tr><tr><td>Race</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>EthnicGroup</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Gender</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>JobCode</td><td>Recommended</td><td>= MAX(All numeric Job Codes) + 1</td><td>Alphanumeric</td><td>255</td><td>An arbitrary code used to uniquely identify a job e.g. ENG001.  
If not provided in the file and a job exists in the system for the JobTitle, the existing JobCode will be used.</td></tr><tr><td>JobTitle</td><td>Mandatory</td><td>Learner</td><td>Alphanumeric</td><td>255</td><td>If the JobCode exists in the system and the current Title differs from the Title in the import, the Title in the system is updated to the value in the import.</td></tr><tr><td>PositionCode</td><td>Recommended</td><td>= JobCode + . + \[ MAX(All numeric Position Codes for JobCode) + 1 \]</td><td>Alphanumeric</td><td>255</td><td>An arbitrary code used to uniquely identify a position linked to a job e.g. ENG001.1.  
If not provided in the file and and a position exists in the system for the PositionTitle, the existing PositionCode will be used.</td></tr><tr><td>PositionTitle</td><td>Recommended</td><td>Learner</td><td>Alphanumeric</td><td>255</td><td>If the PositionCode exists in the system and the current Title differs from the Title in the import, the Title in the system is updated to the value in the import.</td></tr><tr><td>OccupationalCategory\_ShortCode</td><td> </td><td> </td><td>Alphanumeric</td><td>10</td><td> </td></tr><tr><td>OccupationalCategory\_Description</td><td> </td><td> </td><td>Alphanumeric</td><td>255</td><td> </td></tr><tr><td>OccupationalLevel\_ShortCode</td><td> </td><td> </td><td>Alphanumeric</td><td>10</td><td> </td></tr><tr><td>OccupationalLevel\_Description</td><td> </td><td> </td><td>Alphanumeric</td><td>255</td><td>Choose only from the following:  
· Specialist or Middle manager;  
· Technical worker or Junior management;  
· Semi-skilled / discretionary decider;  
· Unskilled / defined decider</td></tr><tr><td>InternalGrading</td><td> </td><td> </td><td>Alphanumeric</td><td>255</td><td>These values MUST be unique per Job.</td></tr><tr><td>OFOCode</td><td> </td><td> </td><td>Alphanumeric</td><td>50</td><td> </td></tr><tr><td>MovementReason</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td><td> </td></tr><tr><td>EmploymentType\_Code</td><td>Recommended</td><td>Permanent</td><td>Alphanumeric</td><td>50</td><td>Double-check these values. Inconsistencies/differences between values which should be the same will cause them to be treated as separate values.</td></tr><tr><td>EmploymentType\_Description</td><td>Mandatory</td><td>Permanent</td><td>Alphanumeric</td><td>500</td><td>Double-check these values. Inconsistencies/differences between values which should be the same will cause them to be treated as separate values</td></tr><tr><td>LineManagerEmployeeNumber</td><td>Recommended</td><td> </td><td>Alphanumeric</td><td>100</td><td>The employee number of the line manager to whom the employee reports. Mainly used for HR Event Management, not critical in LMS.  
The line manager automatically acts in the place of all other managers unless the others are populated. Note that for every employee who is used as a line manager, there has to be a separate employee record in the import sheet or the line manager should already exist as an employee in the system.</td></tr><tr><td>LineManagerName</td><td>Recommended</td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>PerformanceManagerEmployeeNumber</td><td> </td><td>= LineManagerEmployeeNumber</td><td>Alphanumeric</td><td>100</td><td>The employee number of the manager to whom the employee reports for performance management purposes.</td></tr><tr><td>PerformanceManagerName</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>DepartmentManagerEmployeeNumber</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td><td> </td></tr><tr><td>DepartmentManagerName</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>TrainingManagerEmployeeNumber</td><td> </td><td>= LineManagerEmployeeNumber</td><td>Alphanumeric</td><td>100</td><td>The employee number of the manager to whom the employee reports for training approval purposes.</td></tr><tr><td>TrainingManagerName</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>PDPFirstApproverEmployeeNumber</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td><td> </td></tr><tr><td>PDPFirstApproverName</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>PDPSecondApproverEmployeeNumber</td><td> </td><td> </td><td>Alphanumeric</td><td>100</td><td> </td></tr><tr><td>PDPSecondApproverName</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>LeaveManagerEmployeeNumber</td><td> </td><td>= LineManagerEmployeeNumber</td><td>Alphanumeric</td><td>100</td><td>The employee number of the manager to whom the employee reports for leave approval purposes.</td></tr><tr><td>LeaveManagerName</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>SalaryReviewManagerEmployeeNumber</td><td> </td><td>= LineManagerEmployeeNumber</td><td>Alphanumeric</td><td>100</td><td> </td></tr><tr><td>SalaryReviewManagerName</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>StartDateInCompany</td><td>Recommended</td><td>(1) Start Date In Group  
(2) Start Date In Position  
(3) Start Date In System  
(4) GETDATE()  
(see comments)</td><td>YYYY/MM/DD</td><td>10</td><td>The employee’s start date in his current company if the client has a multi-company system configuration.  
If this date is not provided in the import and a position for this employee in the Job/Position and Schema exists in the system, the date from the existing position is used.  
StartDateInGroup = StartDateInCompany = StartDateInPosition</td></tr><tr><td>StartDateInGroup</td><td>Recommended</td><td>(1) Start Date In Company  
(2) Start Date In Position  
(3) Start Date In System  
(4) GETDATE()  
(see comments)</td><td>YYYY/MM/DD</td><td>10</td><td>The employee’s initial start date in the group as a whole if the client has a multi-company system configuration.  
If this date is not provided in the import and a position for this employee in the Job/Position and Schema exists in the system, the date from the existing position is used.  
StartDateInGroup = StartDateInCompany = StartDateInPosition</td></tr><tr><td>StartDateInPosition</td><td>Recommended</td><td>(1) Start Date In Group  
(2) Start Date In Company  
(3) Start Date In System  
(4) GETDATE()  
(see comments)</td><td>YYYY/MM/DD</td><td>10</td><td>The position the employee currently holds.  
If this date is not provided in the import and a position for this employee in the Job/Position and Schema exists in the system, the date from the existing position is used.  
StartDateInCompany = StartDateInPosition = TerminationDate</td></tr><tr><td>TerminationDate</td><td>Recommended</td><td>9999/12/31</td><td>YYYY/MM/DD</td><td>10</td><td>If Signify is expected to import previous/terminated employees then this field should be provided  
StartDateInPosition = TerminationDate</td></tr><tr><td>ReasonForTermination</td><td> </td><td>Resignation (if TerminationDate != 9999/12/31)</td><td>Alphanumeric</td><td>500</td><td>Should only be provided if TerminationDate is present and not 9999/12/31</td></tr><tr><td>Nationality</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>HomeLanguage</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Home\_Country</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Home\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Home\_CityTownVillage</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Home\_PostalCode</td><td> </td><td> </td><td>Alphanumeric</td><td>10</td><td> </td></tr><tr><td>Home\_UnitNumber</td><td> </td><td> </td><td>Alphanumeric</td><td>50</td><td> </td></tr><tr><td>Home\_Complex</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Home\_StreetNo</td><td> </td><td> </td><td>Alphanumeric</td><td>50</td><td> </td></tr><tr><td>Home\_Street</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Home\_Address1</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Home\_Address2</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Home\_Address3</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>HomePostal\_Address1</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>HomePostal\_Address2</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>HomePostal\_Address3</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>HomePostal\_Country</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>HomePostal\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>HomePostal\_CityTownVillage</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>HomePostal\_PostalCode</td><td> </td><td> </td><td>Alphanumeric</td><td>10</td><td> </td></tr><tr><td>Business\_FloorNumber</td><td> </td><td> </td><td>Alphanumeric</td><td>50</td><td> </td></tr><tr><td>Business\_Address1</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Business\_Address2</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Business\_Address3</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Business\_Country</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Business\_Region</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Business\_CityTownVillage</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Business\_PostalCode</td><td> </td><td> </td><td>Alphanumeric</td><td>10</td><td> </td></tr><tr><td>PassportNumber</td><td> </td><td> </td><td>Alphanumeric</td><td>50</td><td> </td></tr><tr><td>MaritalStatus</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Citizenship</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td> </td></tr><tr><td>Disability</td><td> </td><td> </td><td>Alphanumeric</td><td>500</td><td>More than one disability can be added per employee. Use the semicolon to add more than one disability.</td></tr><tr><td>Customfield1</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td><td rowspan="20">Custom Fields are only imported if enabled per customer</td></tr><tr><td>Customfield2</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield3</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield4</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield5</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield6</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield7</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield8</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield9</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield10</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield11</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield12</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield13</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield14</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield15</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield16</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield17</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield18</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield19</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>Customfield20</td><td> </td><td> </td><td>Alphanumeric</td><td>2000</td></tr><tr><td>PasswordIfNewEmployee</td><td>Recommended</td><td>= Auto generated</td><td>Alphanumeric</td><td>75</td><td>System will never update password for existing employees.  
System will only assign password for new employees.  
System will force password change at first logon</td></tr><tr><td>SchemaID</td><td>Mandatory</td><td>1</td><td>Numeric</td><td>4</td><td>Only required if more than one schema exists</td></tr></tbody></table>

</div>## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>IMPORT PROCESS STAGES

The import process kicks off by executing a validation process to determine if the information in the staging table is acceptable. If a specific record fails the validation process, this record will not be imported by the actual import. All the records that passed the validation will be imported.

The import process stages are as follows:

## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>1. PRE-IMPORT

When the Excel Spreadsheet Template Import method is used, the import sheet layout has to be exactly the same as defined in the “Excel Import Template Layout” section. The entire import file can be rejected because:

<div data-step-uuid="91cf8a36-7c17-40db-922d-5c26c67c990b" id="bkmrk-the-number-of-column"><div data-step-uuid="91cf8a36-7c17-40db-922d-5c26c67c990b"><div>- The number of columns are not correct.
- The column names are not correctly defined.
- The fields contain commas, carriage returns or other special characters.

</div></div></div>Before any changes are made, the process makes a backup of the import process file content which will be processed.

The following data validations are done before a record is inserted or updated in the Signify System to ensure that data integrity is maintained:

<div data-step-uuid="91cf8a36-7c17-40db-922d-5c26c67c990b" id="bkmrk-date-validations%3A-al"><div>- Date validations: 
    - All the dates are in the correct format (YYYY/MM/DD).
    - Start date in company is after start date in group.
    - Start Date in Position is after start date in group and after start date in company.
    - Termination date is after Start Date in position.
    - Termination date is after Start Date in company.
    - Termination date is after Start Date in group.
- Employee Data: 
    - Employee’s employee number is populated.
    - Employee’s first name is populated.
    - Employee’s surname is populated.
    - Employee number is not duplicated in the import.
- Job codes and positions: 
    - A job title is provided for each employee.
    - Multiple employees are not appointed in the same position at the same time.
    - The same job title does not exist for different job codes.
- Employment: 
    - All employees have an employment type description.
    - All employees have at least one organisation level.
- Schema ID is populated for each employee.

</div></div>## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>2. ACTUAL IMPORT

The information is imported in the following order once the validation has been completed.

<div data-step-uuid="1db26446-b009-4789-929c-b004ad4d1736" id="bkmrk-master-data%3A-address"><div data-step-uuid="1db26446-b009-4789-929c-b004ad4d1736"><div>1. Master data: 
    1. Address related master data (e.g. Countries)
    2. Employment Types
    3. Titles
    4. Ethnic Groups
    5. Genders
    6. Races
    7. Marital Status
    8. Nationality
    9. Occupational Categories (OFO-related)
    10. Occupational Levels (OFO-related)
    11. OFO Codes
    12. Languages
2. Org Structure Master Data (Codes &amp; Names): 
    1. Validation performed:
    2. Ensure that the Org Structure nodes for each record conform to all rules for the Org Structure as configured for the Schema (e.g. Level 3 node can be child of Level 1 or Level 2, Level 2 node can be child of Level 1, etc.)
    3. Some clients prefer to manually maintain their organisation structures. In such a case Signify will only appoint employees in an org structure nodes that already exists.
3. Job Profiler Master Data: 
    1. Job Codes &amp; Titles
    2. Position Codes &amp; Titles
    3. Link Positions to the correct nodes in the Org Structure.
4. Import of Basic Employee Details per employee (New or update existing)
5. Import of Reporting Line Details per employee
6. Import of Appointment Related Data in the following order: 
    1. Terminations 
        - I.e. an employee’s current position is terminated
    2. Transfers 
        - I.e. an employee transfer from one position to another is identified
    3. Corrections 
        - I.e. the basic employee or appointment data must be corrected
    4. New Appointments 
        - I.e. the employee and position is entirely new
7. Further actions performed after employee import process has been completed: 
    1. Create User Account if new employee and link to employee account (using an SP)
    2. Disable user accounts for terminated employees
    3. Update flat Org Structure for all Org Nodes (using an SP)
    4. Subgroups are created for managers and org structure levels.
8. Further Customer Specific Actions: 
    1. Import of Custom Field Details per employee only if enabled per customer.
    2. Create/update all Employee Subgroups as needed
    3. Update Subsidiary Codes, etc.

</div></div></div>Any records failing validation are excluded from the import and a validation log entry is created for these records to populate exception reports from the import process.

## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>Excel Spreadsheet Template Import method

## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>1. PREPARING THE DATA

The following steps assume you have already populated and verified the data in the Signify Software *Employee Data Import* spreadsheet. For a full discussion on populating the spreadsheet, please see the addendum later in this document.

## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>2. IMPORTING THE DATA

After you have successfully populated the Employee Data Import spreadsheet, you can start with the import by following these steps.

1\. Save the Excel spreadsheet as a **Comma Delimited (CSV)** file.

<div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642" id="bkmrk--1"><div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642"><div></div><div>![](https://media.screensteps.com/image_assets/assets/000/522/051/original/25841ea3-6eb5-490c-a863-d8169ef19c4c.png)</div><div></div></div></div>2\. Open the Signify system, logging in as an Administrator.

<div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642" id="bkmrk--2"><div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642"><div></div><div>![](https://media.screensteps.com/image_assets/assets/000/522/057/original/aa365f09-7232-4519-808b-cab0898de168.png)</div><div></div></div></div>3\. Select System Administration from the Administration Menu

<div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642" id="bkmrk--3"><div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642"><div></div><div>![](https://media.screensteps.com/image_assets/assets/000/522/055/original/0fc63b4c-67b1-45b0-99dd-36019dc8acaa.png)</div><div></div></div></div>4\. Highlight and open **Import Data** under System Administration | Import Data

<div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642" id="bkmrk--4"><div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642"><div></div><div>![](https://media.screensteps.com/image_assets/assets/000/522/043/original/373025e7-cd28-4721-a172-f3e7ec447638.png)</div><div></div></div></div>5\. Search for the relevant import template and click on the link in the **Action** column. Select the **Import File** link:

<div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642" id="bkmrk--5"><div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642"><div></div><div>![](https://media.screensteps.com/image_assets/assets/000/522/047/original/950c0418-56ab-4080-9f45-04627a1b6ff8.png)</div><div></div></div></div>6\. Once the **Import File** option is chosen, the below screen will be displayed:

<div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642" id="bkmrk--6"><div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642"><div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642"><div></div><div></div></div></div></div>[![image-1616952913724.png](https://signature.signifyhr.co.za/uploads/images/gallery/2021-03/scaled-1680-/LA3rvT3yHx16HEr8-image-1616952913724.png)](https://signature.signifyhr.co.za/uploads/images/gallery/2021-03/LA3rvT3yHx16HEr8-image-1616952913724.png)

<div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642" id="bkmrk--8"><div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642"><div></div><div></div></div></div>When using a preconfigured import template, most of the import steps would be configured correctly.

<div data-step-uuid="a9c44bfe-34f4-441e-b9ce-a1ef4c578642" id="bkmrk-click%C2%A0choose-file%C2%A0an"><div>- Click **Choose File** and then navigate to your newly saved CSV file.

</div><div>![](https://media.screensteps.com/image_assets/assets/000/522/041/original/3d394475-72a2-4ac1-a006-e9ec81bfd283.png)</div><div>- Click **Save &amp; Preview**.

</div><div>![](https://media.screensteps.com/image_assets/assets/000/522/037/original/24739d44-5111-4073-93cf-d34e38527be8.png)</div><div>- Tick “**I verify that the preview of the below data is correct**”.
- Click Execute Mock Import to preview the imported information.

</div><div>![](https://media.screensteps.com/image_assets/assets/000/522/049/original/e137a4ae-04ad-4065-99d1-e7bce1f11a5e.png)</div></div><div id="bkmrk-view-the-mock-import">- View the Mock Import results.

</div>[![image-1616952921563.png](https://signature.signifyhr.co.za/uploads/images/gallery/2021-03/scaled-1680-/JjEOSKa6xXJ6UTsK-image-1616952921563.png)](https://signature.signifyhr.co.za/uploads/images/gallery/2021-03/JjEOSKa6xXJ6UTsK-image-1616952921563.png)

<div id="bkmrk-if-the-mock-import-r">- If the mock import results are correct, click on Execute Import.

</div>[![image-1616952928236.png](https://signature.signifyhr.co.za/uploads/images/gallery/2021-03/scaled-1680-/rDaBMSI8cZPi1UoD-image-1616952928236.png)](https://signature.signifyhr.co.za/uploads/images/gallery/2021-03/rDaBMSI8cZPi1UoD-image-1616952928236.png)

<div id="bkmrk-once-you-are-satisfi">- Once you are satisfied with the results, click on Close.

</div>## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>4. HOW TO DOWNLOAD A SAMPLE FILE

<div data-step-uuid="3f7b192d-6e00-46ea-965a-e1fcf2fad864" id="bkmrk-a-sample-file-will-p"><div data-step-uuid="3f7b192d-6e00-46ea-965a-e1fcf2fad864"><div>- A sample file will provide the exact data sets required for the import process to go through smoothly.
- On the Home page select **System Administration**:

</div><div>![](https://media.screensteps.com/image_assets/assets/000/522/313/original/ab09a62b-656f-415f-bb85-833fa5b9ec82.png)</div><div>- At the top menu on the System Administration tab, select the **Import Data** from the drop-down list.
- Click on the link in the Action column and then select the **Download sample file** link.

</div><div>![](https://media.screensteps.com/image_assets/assets/000/522/317/original/d041933d-5232-44db-bb67-29bc55f634e3.png)</div><div>- Once the file has finished download the file can be opened and saved.

</div></div></div><p class="callout info">**NOTE:** the downloaded file will always be in CSV format.</p>

## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>5. EXCEPTION MANAGEMENT

An audit trail is kept for all records imported, updated and rejected and is available via the Signify report module. The audit records are only available for a few months after the import and are then automatically deleted.

*The following are examples of exceptions messages that should be resolved before a record can be successfully imported and saved:*

<div data-step-uuid="4045d555-05b8-4ab5-a7ac-7f56ae4e0e02" id="bkmrk-incorrect-date-forma"><div data-step-uuid="4045d555-05b8-4ab5-a7ac-7f56ae4e0e02"><div>- *Incorrect date format(s)*
- *StartDateInGroup ({0}) cannot be AFTER StartDateInCompany ({1})*
- *StartDateInCompany ({0}) cannot be AFTER StartDateInPosition ({1})*
- *StartDateInPosition ({0}) cannot be AFTER TerminationDate ({1})*
- *Employee number duplicates in the import file.*
- *There are different Job Titles using the same Job Code*
- *Position is not unique, another employee in the import has the same position code*
- *Appointment record overlaps another appointment record for employee OR another employee is appointed in the same position overlapping the time period specified. Start and End Date in a position is determined by Start Date In Position and Termination Date respectively.*
- *LineManagerEmployeeNumber - 4779 - does not exist in the system or in the import file*
- *PDPFirstApproverEmployeeNumber - 4779 - does not exist in the system or in the import file*
- *DepartmentManagerEmployeeNumber - CM01586 - does not exist in the system or in the import file*
- *PerformanceManagerEmployeeNumber - CM01586 - does not exist in the system or in the import file*
- *TrainingManagerEmployeeNumber - CM03397 - does not exist in the system or in the import file*
- *LeaveManagerEmployeeNumber - 9442 - does not exist in the system or in the import file*
- *Appointment overlaps existing appointment for employee*
- *Employee cannot be transferred to another schema with the same start date in position*
- *An unexpected scenario or anomaly has occurred. Please review the appointment information for further information*

</div></div></div>Below find the exception reports available for the import process.

## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>6. EMPLOYEE IMPORT SUMMARY AND DRILLDOWN REPORT

This is a drilldown report whereby the user can drill down on the number of ‘**Exceptions’** (rejections) and the total number of ‘**Records in Import’** per day.

<div data-step-uuid="606ea440-ddf8-47f1-83fd-40255ed81d5e" id="bkmrk--11"><div data-step-uuid="606ea440-ddf8-47f1-83fd-40255ed81d5e"><div></div><div>![](https://media.screensteps.com/image_assets/assets/000/522/315/original/e3a445ab-2a27-41f0-bdbf-d84e1dff9230.png)</div><div></div></div></div>The user can click on the hyperlinks in the summary report to see the detail information per employee.

<div data-step-uuid="606ea440-ddf8-47f1-83fd-40255ed81d5e" id="bkmrk--12"><div data-step-uuid="606ea440-ddf8-47f1-83fd-40255ed81d5e"><div></div><div></div></div></div>[![image-1616952938975.png](https://signature.signifyhr.co.za/uploads/images/gallery/2021-03/scaled-1680-/HdKvTmvJL4R73jBn-image-1616952938975.png)](https://signature.signifyhr.co.za/uploads/images/gallery/2021-03/HdKvTmvJL4R73jBn-image-1616952938975.png)

<div data-step-uuid="606ea440-ddf8-47f1-83fd-40255ed81d5e" id="bkmrk--14"><div></div></div>## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>7. EMPLOYEE IMPORT VALIDATION LOG E-MAIL

Currently the employee import process running at one of the Signify customers automatically sends an email to one of their employees containing the results of the import process, after the import process has completed. This enables them to respond to any errors in the import file to correct the information when imported again. See below an example of such import file.

<div data-step-uuid="ffd0a7b5-b9a8-458e-90c0-ad11b4e7416d" id="bkmrk--15"><div></div><div>![](https://media.screensteps.com/image_assets/assets/000/522/321/original/273a5197-fd8f-44a1-98ea-e365e2539601.png)</div></div>## <svg aria-label="Heading anchor" enable-background="new 0 0 20 20" height="16" role="img" viewbox="0 0 20 20" width="16" xmlns="http://www.w3.org/2000/svg"></svg>FREQUENTLY ASKED QUESTIONS

1\. When does the Signify process, which picks up data from the client’s staging table, run?

*The process can be scheduled according to the client’s needs and specifications e.g. every morning at 5:00 AM.*

2\. How is this process initiated, is it a batch process or manual run?

*A SQL job initiates the scheduled task.*

3\. What does the process do exactly e.g. populate tables, perform any data validations?

·  *Clear the Signify import table.*

*· Copy all data from the client’s staging table to the Signify staging table.*

*· Data validations are done before a record is inserted or updated in the Signify System to ensure that data integrity is maintained.*

*· An audit trail is kept for all records imported, updated and rejected and is available via the Signify report module, since the amount of data generated, the audit is only available for a few months after the import date.*

4\. What if there is no data in the client’s staging table, does it notify anyone that the process was unsuccessful or is no action taken?

*Nobody will be notified that the client’s staging table contains no data. The SQL job will start as normal, but no data will result in no changes in the Signify system.*

5\. If there are no changes found when comparing to the existing data within Signify to the new imported client data, what action is taken?

*No update is done in the Signify system.*

6\. If there are updates for existing records, does it delete the old record and insert a new record, or merely update the existing record with the new values?

*Depending on the type of change, personnel information only updates the existing record, while a position change creates a new record.*

7\. For new data, is it as simple as inserting the new record/s?

*Yes, a new record is created for each new employee.*