Overview
The HR Automation is a feature of the modular solution Employee Records Management (ERM). It is a microservice included in the database template which the System Administrator will use when setting up a clone database for the implementation. This microservice retrieves values from the specified fields within the Employee Master Form and does not require additional configuration.
Feature Objective
The HR Automation feature streamlines the management of employee records by automatically creating and maintaining Document Library folders in response to changes in the Employee Master Form.
Key capabilities include:
Initial Folder Creation — Automatically creates an Employee Document Library folder upon initial creation of an Employee Master iForm in VisualVault, placed under the appropriate alphabetical node based on last name, using the naming convention "Last Name, First Name, Unique Identifier."
Folder Updates — Upon manual modification of an existing Employee Master iForm, updates the employee folder to reflect changes to first name, last name, or Employee ID.
Status-Based Movement — Moves employee folders between the Active and Terminated nodes in the document library when an employee's status changes.
Document Import — Imports documents from sFTP into the employee's Onboarding folder, routing exceptions to
/Human Resources/Employee Files/Exceptions.Security Management — Applies and maintains role-based access controls across all employee folder structures according to a defined Security Matrix.
Technical Architecture
Application Stack
Layer | Technology |
|---|---|
Runtime | .NET |
Framework | VisualVault Platform Application |
Authentication | VisualVault platform tokens |
Integration | VisualVault Platform API; sFTP file import; no direct DB access |
Source Repository | GitHub – |
Integration with VisualVault
The application is included in the source database and activated as part of the HR-1 solution setup. It reads employee data from CSV files retrieved via sFTP and interacts with the VisualVault Platform API to create, update, and move folders within the Document Library. The Employee Master Form serves as the system of record; the app reads from and writes back to it during each execution cycle.
+-------------------------------+ +--------------------------------+
| sFTP Server | import | HR Automation App |
| | -------> | (FM.HRFolderCreation) |
| [ CSV File(s) ] | | |
| Employee records | | Validates via App.config |
| (LastName, FirstName, | | Reads/writes Employee Master |
| EmployeeID, Status, Type) | | Form and Document Library |
+-------------------------------+ +--------------------------------+Data Flow
📋 Coming Soon: A diagram illustrating the full API call sequence and data flow between the HR Automation app, the VisualVault platform, the Employee Master Form, and the sFTP file source will be added here.
Security Matrix
Access to employee folders and subfolders is enforced according to the following Security Matrix. Group assignment is applied automatically by the application based on the employee's type.
FolderName | Security Groups |
|---|---|
/Employee Folders |
|
/Employee Folders/1 - Onboarding Documents and Personal information |
|
/Employee Folders/2 - HR Compliance | |
/Employee Folders/3 - Employment Histoy | |
/Employee Folders/4 - Employment Relations | |
/Employee Folders/5 - Performance and Training | |
/Employee Folders/6 - Termination Records | |
/Employee Folders/7 - Employment Benefit File |
|
/Employee Folders/8 - I-9 |
|
🔍 Troubleshooting Note: If a user reports missing access to an employee folder or subfolder, first confirm that the correct security group (HR, Employee, or Executive — matching the employee type) has been assigned in VisualVault. Mismatches in employee type values between the CSV and configured
EmployeeTypeValuesare the most common cause.
Configuration Parameters
🔧 Implementor Note: All parameters below must be configured in the
App.configfile before deployment. Values are environment-specific and should be confirmed with the customer prior to implementation.
App.config
Parameter | Description |
|---|---|
| File extensions permitted for import. Only |
| Path to the Human Resources root folder in the document library. |
| Name of the Employee Master Form template. |
| Comma-separated names of the folder index fields. |
| Comma-separated field names on the Employee Master Form. |
| Name of the query used to retrieve all folders for an employee. |
| Name of the form field where the folder path is stored. |
| Character used to separate columns in the CSV. |
| Character used to indicate the end of a line in the CSV. |
| Header of the last name column in the CSV. |
| Header of the first name column in the CSV. |
| Header of the employee ID column in the CSV. |
| Header of the employee type column in the CSV. |
| Header of the employee status column in the CSV. |
| Comma-separated list of valid employee type values in the CSV. |
xml
<add key="ftpRemoteFileExtensionAllowed" value=".csv" />
<add key="vvDocumentLibraryRootPath" value="/Human Resources" />
<add key="vvFormTemplate" value="Employee Master" />
<add key="folderIndexFields" value="Employee First Name,Employee Last Name,Unique Employee ID Number,Employee Status" />
<add key="formFields" value="First Name,Last Name,Employee ID,Employee Status,Employee Type,Needs Compliance Review" />
<add key="queryName" value="GetFolders" />
<add key="folderPathFormField" value="Folder Path" />
<add key="SplitCharacter" value="," />
<add key="TrimCharacter" value=""" />
<add key="LastNameColumnName" value="Employee Last Name" />
<add key="FirstNameColumnName" value="Employee First Name" />
<add key="EmployeeIdColumnName" value="Employee UNIQUE ID" />
<add key="EmployeeTypeColumnName" value="Employee Type" />
<add key="EmployeeStatusColumnName" value="Employee Status" />
<add key="EmployeeTypeValues" value="Employee,Executive,HR" />🔍 Troubleshooting Note: The
vvDocumentLibraryRootPathvalue must match the exact path of the Human Resources root folder as configured in the VisualVault Document Library. Do not include a trailing slash.
Specs
Need to set Client system import for 23 hrs after standard HR import to allow for folder creation
Documents will go in the Onboarding folder in each Employee File
Exceptions will go to /Human Resources/Employee Files/Exceptions
Items will import from sFTP
Indexes
Doc Type | FileName | Indexes |
|---|---|---|
Application | LastName_FirstName_EmpID_Application_Job Title_Date.pdf | Last Name, First Name, Employee ID, Job Title, Date |
Resumes | LastName_FirstName_EmpID_Resume_Date.pdf | Last Name, First Name, Employee ID, Date |
Offer Letters | LastName_FirstName_EmpID_OfferLetter_Job Title_Date.pdf | Last Name, First Name, Employee ID, Job Title, Date |
Contracts | LastName_FirstName_EmpID_Contract_Date.pdf | Last Name, First Name, Employee ID, Date |
HIPAA | LastName_FirstName_EmpID_HIPAA_Date.pdf | Last Name, First Name, Employee ID, Date |
Personal Data | LastName_FirstName_EmpID_PersonalData_Date.pdf | Last Name, First Name, Employee ID, Date |
Abuse Form Child | LastName_FirstName_EmpID_AbuseFormChild_Date.pdf | Last Name, First Name, Employee ID, Date |
Abuse Form Domestic | LastName_FirstName_EmpID_AbuseFormDomestic_Date.pdf | Last Name, First Name, Employee ID, Date |
Abuse Form Elderly | LastName_FirstName_EmpID_AbuseFormElderly_Date.pdf | Last Name, First Name, Employee ID, Date |
Confidentiality | LastName_FirstName_EmpID_Confidentiality_Date.pdf | Last Name, First Name, Employee ID, Date |
Facts About Workers | LastName_FirstName_EmpID_FactsAboutWorkers_Date.pdf | Last Name, First Name, Employee ID, Date |
License | LastName_FirstName_EmpID_License_Expiration Date_License Name_Date_Code.pdf | Last Name, First Name, Employee ID, Expiration Date, License Name, Date |
Certification | LastName_FirstName_EmpID_Certification_Expiration Date_Certification Name_Date_Code.pdf | Last Name, First Name, Employee ID, Expiration Date, Certification Name, Date |
Degree | LastName_FirstName_EmpID_Degree_DegreeName_Type of Degree_Date_Code.pdf | Last Name, First Name, Employee ID, Degree Name, Degree Date |
Walkthrough
Developer Setup
The following steps require repository access and a code editor. These are performed by a developer prior to deployment.
Step 1 — Clone the Repository
Clone the VisualVault.Net.FileManager repository from GitHub and navigate to the FM/FM.CapeCodFolderCreation directory.
https://github.com/VisualVault/VisualVault.Net.FileManager/tree/04e83116a7d83de47cba09c7e69e708d8ad5517a/FM/FM.CapeCodFolderCreationStep 2 — Configure App.config Parameters
Open
App.configand update all parameters listed in the Configuration Parameters section with the customer's environment-specific values.Confirm that
vvDocumentLibraryRootPathreflects the exact path to the Human Resources root folder in the target VisualVault environment.Confirm that
EmployeeTypeValuesmatches the exact employee type strings used in the customer's CSV export.
🔍 Troubleshooting Note:
vvDocumentLibraryRootPathshould be a path only, no trailing slash and no full URL.
Step 3 — Configure Import Timing
Set the client system import schedule to run 23 hours after the standard HR import. This delay ensures that employee folders are created before documents are imported into them.
🔍 Troubleshooting Note: Documents are placed in the Onboarding folder within each employee's file. Exceptions are routed to
/Human Resources/Employee Files/Exceptions.
Implementor Configuration
The following steps are performed by an implementor in VisualVault after developer setup is complete.
🔧 Implementor Checklist
Verify that security groups created in VisualVault match the Security Matrix.
Verify security groups were populated with appropriate users.
Configure the sFTP server with credentials and remote path matching
App.configFTP settings.
Execution Flow
The following describes the runtime sequence from file detection through folder creation or update completion.
Application Initialization
The application reads all configuration values from
App.config.The Template ID for the Employee Master Form is retrieved from VisualVault.
All files present at the configured
ftpRemotePathare retrieved.For each file, the application verifies the file extension is permitted (
.csvonly).The most recently updated backup file is retrieved from
_BackupFileto use as a comparison baseline.
🔍 Troubleshooting Note: If the application fails to initialize, first verify that
App.configvalues are correct and that the VisualVault platform API is reachable. If no files are processed, confirm that the sFTP path is accessible and that files use the.csvextension.
CSV Processing and Form Sync
For each row in the CSV file, the application compares the current row against the same employee ID in the previous backup file.
Rows with no changes are skipped.
For rows with changes, the application searches VisualVault for an existing Employee Master Form matching the employee ID.
If no form exists, a new Employee Master Form is created using the row's first name, last name, ID, and status values. The generated folder path is saved to the form.
If a form exists, it is updated with the new values from the row. The folder path is recalculated and saved.
Folder Creation and Movement
Using the row data, the application generates the expected folder path and name using the convention:
Last Name, First Name, Unique Identifier.A search is performed to determine whether a folder with that name already exists in the Document Library (under Active or Terminated).
If the folder exists:
The application compares the existing folder path to the generated path.
If the paths match, no action is taken.
If the paths differ (e.g., employee status has changed, or a name has been updated):
The parent folder (alphabetical last name initial) is validated; it is created if missing.
The folder and all documents are moved to the new path.
Index fields and security group assignments are updated for the folder, all subfolders, and all documents within those subfolders.
If the folder does not exist:
The
/Human Resources/HR Templatefolder structure is copied to the new employee folder path.The folder name and description are updated using the generated folder name.
Index fields for the new folder are populated with first name, last name, and unique employee ID.
Security group assignments are applied to the folder and all subfolders per the Security Matrix.
After processing, the source CSV file is moved from the root FTP folder to the backup folder (
remoteFolder/_BackUp).The process ends.
🔍 Troubleshooting Note: If a folder is not created or moved as expected, confirm that the
HR Templatefolder exists at the correct path and that theGetFoldersquery is returning results. Verify that the employee's status and type values in the CSV match the configuredEmployeeStatusColumnNameandEmployeeTypeValuesparameters exactly.
Document Import
Documents are imported from sFTP and placed into the Onboarding subfolder within each employee's Document Library folder. Files must follow the naming conventions below to ensure correct index field population.
Doc Type | File Naming Convention | Index Fields |
|---|---|---|
Application |
| Last Name, First Name, Employee ID, Job Title, Date |
Resume |
| Last Name, First Name, Employee ID, Date |
Offer Letter |
| Last Name, First Name, Employee ID, Job Title, Date |
Contract |
| Last Name, First Name, Employee ID, Date |
HIPAA |
| Last Name, First Name, Employee ID, Date |
Personal Data |
| Last Name, First Name, Employee ID, Date |
Abuse Form — Child |
| Last Name, First Name, Employee ID, Date |
Abuse Form — Domestic |
| Last Name, First Name, Employee ID, Date |
Abuse Form — Elderly |
| Last Name, First Name, Employee ID, Date |
Confidentiality |
| Last Name, First Name, Employee ID, Date |
Facts About Workers |
| Last Name, First Name, Employee ID, Date |
License |
| Last Name, First Name, Employee ID, Expiration Date, License Name |
Certification |
| Last Name, First Name, Employee ID, Expiration Date, Certification Name |
Degree |
| Last Name, First Name, Employee ID, Degree Name, Type of Degree |
🔍 Troubleshooting Note: If documents are not appearing in the expected employee folder, confirm the file naming convention matches the format above and that the import is scheduled at least 23 hours after the standard HR import. Files that cannot be matched to an employee record will be routed to
/Human Resources/Employee Files/Exceptions.
FAQ
Does the scan team ever manually upload to the Document Library and does that affect the automation?
The scan team would very rarely manually input any items into the Document Library. However, the way the scan team inputs files bypasses the HR Automations and is not guarenteed to have a match in the Employee Master Form.
Related Resources
Github Repository: HR Folder Creation
