Guide to Visma Enterprise Data Import

This document provides a detailed description of the fields in the XML master data file that eADM imports from Visma Enterprise HRM (VEP). It is intended for technical personnel responsible for setting up and maintaining the integration.

The file is delivered as a <personsXML> document containing one <person> element per employee. Each person record holds identity details, contact information, and one or more <employment> records describing the employee's positions, organisational placement, and compensation.

Warning: The source file can contain sensitive information, including salary details, tax data, bank account numbers, and dependent information. Review the Filtering and Transforming Import Data guide before importing an unfiltered file, and remove any elements that are not required by the integration.


Employee Data

Example of Employee Data

Below is an anonymised example of a <person> element for a single employee. All identifying values (name, national identity number, contact details, organisation number) have been replaced with placeholder data.

XML
<person personIdHRM="10023">
    <authentication>
        <initials>KARNOR</initials>
        <userId>1042</userId>
        <username>KARI NORDMANN</username>
        <alias>KARNOR</alias>
    </authentication>
    <careerInfo>
        <jobTitle>Sykepleier</jobTitle>
        <workTasks>Sykepleier</workTasks>
    </careerInfo>
    <contactInfo>
        <email>kari.nordmann@utfjord.kommune.no</email>
        <workPhone>00000000</workPhone>
        <privateMobilePhone>00000000</privateMobilePhone>
        <paycheckByEmail>false</paycheckByEmail>
    </contactInfo>
    <dateOfBirth>1985-01-01</dateOfBirth>
    <dependents/>
    <employments>
        <employment>
            <bankDetails>
                <accountNumber>00000000000</accountNumber>
                <alias>Hovedkonto</alias>
                <nationalityCode>NO</nationalityCode>
            </bankDetails>
            <category id="F3"><description>Fast tilsett utvida</description></category>
            <company>
                <companyId>1</companyId>
                <companyName>Utfjord kommune</companyName>
                <organizationNumber>000000000</organizationNumber>
            </company>
            <companySeniority>2018-01-01</companySeniority>
            <employeeId>10023001</employeeId>
            <employmentPercentage>100.0</employmentPercentage>
            <lastChangedDate>2026-07-01T08:00:00</lastChangedDate>
            <pension name="KLP fellesordning" value="18"/>
            <positions>
                <position isPrimaryPosition="true" validFromDate="2026-01-01">
                    <chart id="5" name="Utfjord kommune">
                        <unit id="1001" name="Helse og omsorg">
                            <manager id="6001" name="Ola Leder"/>
                        </unit>
                    </chart>
                    <costCentres>
                        <dimension2 name="Helse og omsorg" value="2000"/>
                    </costCentres>
                    <employmentPositionPercentage>100.0</employmentPositionPercentage>
                    <positionCategoryNumber>1</positionCategoryNumber>
                    <positionInfo>
                        <positionCode name="Sykepleier" positionCode="7174" positionId="1" tableNr="50"/>
                        <positionType name="Fast" value="F"/>
                        <publicPositionCode name="Sykepleier" value="7174"><set>KS</set><setType>KSSKODE</setType></publicPositionCode>
                    </positionInfo>
                    <positionPercentage>100.0</positionPercentage>
                    <positionStartDate>2018-01-01</positionStartDate>
                    <positionStatistics includeInAA="true" includeInPAI="true">
                        <workClassification name="Sykepleier" value="2223114"/>
                        <workMunicipality name="UTFJORD KOMMUNE" value="0000"/>
                    </positionStatistics>
                    <salaryInfo>
                        <basicSalary>000000.00</basicSalary>
                        <salaryStep>0</salaryStep>
                        <salaryTable name="Kommuneansatte kap. 4" value="4025"/>
                        <yearlySalary>000000.00</yearlySalary>
                    </salaryInfo>
                    <weeklyHours>37.50</weeklyHours>
                </position>
            </positions>
            <taxDetails>
                <taxDeductionCard cardId="0000" cardName="Månedstabell" cardType="M"/>
                <taxPercentage>00.00</taxPercentage>
            </taxDetails>
        </employment>
    </employments>
    <familyName>Nordmann</familyName>
    <genderCode>FEMALE</genderCode>
    <givenName>Kari</givenName>
    <municipality name="UTFJORD KOMMUNE" value="0000"/>
    <nationalityCode>NO</nationalityCode>
    <postalAddress>
        <address1>Eksempelveien 1</address1>
        <countryCode>NO</countryCode>
        <postalArea>UTFJORD</postalArea>
        <postalCode>0000</postalCode>
    </postalAddress>
    <socialSecurityOffice name="NAV UTFJORD" value="0000"/>
    <ssn>00000000000</ssn>
</person>

Note: A person can have several <employment> records (e.g. one per employer within a multi-company setup), and each employment can hold several <position> records. Only one position per employment is marked isPrimaryPosition="true".

Identity, Authentication and Contact Fields

XML Path

Description

Data Type

Mandatory

Usage

person@personIdHRM

Internal Visma Enterprise person ID.

Integer

Yes

Uniquely identifies the person record; used as the source key for matching during synchronisation.

ssn

Norwegian national identity number (fødselsnummer).

String

Yes

Primary identifier used to match the person across eADM, Active Directory, and Feide.

givenName / familyName

First name and last name.

String

Yes

Used to build display names and email addresses in target systems.

authentication/username

Full name as registered for logon.

String

No

Reference field; not normally used directly.

authentication/alias

Username alias.

String

No

Can be used as a candidate value for the target-system username (e.g. sAMAccountName).

dateOfBirth

Date of birth.

Date

No

Can be used in age-based rule sets.

genderCode

Gender (MALE / FEMALE).

String

No

Rarely used in access rules.

careerInfo/jobTitle

Free-text job title.

String

No

Can be exported to target systems as a descriptive title; not used for access control.

contactInfo/email, privateEmail

Work and private email address.

String

No

Used in notification flows, particularly before a work account exists.

contactInfo/workPhone, privateMobilePhone

Work and private phone numbers.

String

No

Used in directory synchronisation and notification flows.

postalAddress

Home address.

String

No

Rarely used; consider filtering out (see Warning above).

Employment and Position Fields

XML Path

Description

Data Type

Mandatory

Usage

employment/employeeId

Employee number for this specific employment relationship.

Integer

Yes

A person can have several employments; this uniquely identifies each one.

employment/category

Employment category code and description (e.g. F3 / "Fast tilsett utvida").

String

No

Distinguishes permanent, temporary, and hourly employment types; used in rule sets.

employment/company

Employer entity (name and organisation number).

String

No

Used when importing data from multiple companies (see "Importing data from multiple companies").

employment/employmentPercentage

Overall employment percentage across all positions.

Decimal

No

Used to distinguish full-time from part-time employment.

position@isPrimaryPosition

Marks the primary position.

Boolean

Yes

Determines which position governs the user's main account, department, and manager. See "Using the Position Filter".

position/chart/unit

Organisational unit the position belongs to.

String / ID

Yes

Used to place the user in the organisational hierarchy and to assign group memberships.

position/chart/unit/manager

Line manager of the unit.

String / ID

No

Used for manager look-ups, approval flows, and onboarding/offboarding notifications.

position/positionInfo/positionCode

Internal position code and title.

String

No

Used for role-based access control.

position/positionInfo/positionType

Position or employment status code (e.g. F "Fast" [permanent], PF "Foreldrepermisjon" [parental leave], PU "Perm u/lønn" [unpaid leave], V "Vikar" [temporary substitute]).

String

No

Source field for eADM's QualificationCode attribute. See "Understanding the QualificationCode Attribute" below.

position/positionInfo/publicPositionCode

Statutory position code (KS tariff, "KSSKODE").

String

No

Used for tariff-based rules and statutory reporting.

position/positionPercentage

Percentage this specific position occupies.

Decimal

No

Used in position filters. See "Using the Position Filter".

position/positionStartDate, positionEndDate, @validFromDate

Position validity dates.

Date

No

Used to activate and deactivate access tied to the position.

position/costCentres/dimensionX

Cost centre / budget dimension.

String

No

Used for organisational reporting; rarely used for access control.

position/leave

Leave period, type, and percentage.

String / Date

No

Can be used to suspend or adjust access during long-term leave.

Compensation, Tax and Statistics Fields

XML Path

Description

Data Type

Mandatory

Usage

position/salaryInfo/basicSalary, yearlySalary

Salary figures.

Decimal

No

Not used for access control. Highly sensitive; recommended to filter out before import (see Warning above).

position/positionStatistics/workClassification

Standard occupation classification (STYRK).

String

No

Used for statutory statistics reporting, not for access control.

statistics/paiEducation

Registered education level (PAI / SSB education code).

String

No

Statutory reporting field; a separate concept from eADM's QualificationCode attribute, see below.

employment/taxDetails

Tax withholding details (tax card, percentage).

String / Decimal

No

Sensitive; not used by eADM. Recommended to filter out.

dependents/dependent

Family members registered for pay or insurance purposes.

String

No

Sensitive; recommended to filter out unless specifically required.


Organisational Hierarchy

The organisational hierarchy is delivered separately from the employee data, as a <charts> file containing one <chart> element with a flat list of <unit> elements. Each unit references its parent, so the hierarchy is reconstructed by the importing system rather than being nested in the XML.

Example of Organisational Data

Below is an anonymised example showing a top-level unit and one of its child units.

XML
<charts>
    <chart id="5" name="Utfjord kommune">
        <units>
            <unit company="1" kode="40" id="1" name="Kommunedirektør" unitType="Kommunedirektør" parentid="0">
                <manager id="6001" name="Ola Leder">
                    <proprietorType>PERMANENT</proprietorType>
                </manager>
                <contactInfo>
                    <phone/>
                    <email/>
                </contactInfo>
                <tasks>
                    <task id="8" description="Tilvisar">
                        <employees>
                            <employee id="6001" name="Ola Leder">
                                <proprietorType>PERMANENT</proprietorType>
                            </employee>
                        </employees>
                    </task>
                </tasks>
                <roles>
                    <role id="4" description="Leiar">
                        <employees>
                            <employee id="6001" name="Ola Leder">
                                <proprietorType>PERMANENT</proprietorType>
                            </employee>
                        </employees>
                    </role>
                </roles>
            </unit>
            <unit company="1" kode="7" id="200" name="Helse og omsorg" unitType="Kommunalområde" parentid="40">
                <manager id="6002" name="Kari Nordmann">
                    <proprietorType>PERMANENT</proprietorType>
                </manager>
                <contactInfo>
                    <phone/>
                    <email/>
                </contactInfo>
                <tasks/>
                <roles/>
            </unit>
        </units>
    </chart>
</charts>

Note: The top-level unit (here, "Kommunedirektør") has parentid="0". Every other unit's parentid refers to the kode of its parent unit, not the parent's id. Confusing these two attributes is a common source of hierarchy errors; see "Visma's Recommended Organizational Structure and its Impact on eADM".

Organisational Field Descriptions

XML Path

Description

Data Type

Mandatory

Usage

chart@id, chart@name

Identifier and name of the organisation chart (typically the municipality or company).

Integer / String

Yes

Root of the imported hierarchy.

unit@id

Internal Visma Enterprise unit ID.

String

Yes

Matches position/chart/unit@id in the employee file, used to place employees in the hierarchy.

unit@kode

Short numeric chart code for the unit.

Integer

Yes

Referenced by child units' parentid to build the hierarchy. See Note above.

unit@parentid

The kode of the parent unit (0 for the top-level unit).

Integer

Yes

Builds the parent-child structure of the organisation.

unit@name

Department or unit name.

String

Yes

Displayed in target systems and used to build group names.

unit@unitType

Type of unit (e.g. "Kommunedirektør", "Kommunalområde", "Eining", "Team", "Ikkje tilsett").

String

No

Can be used in rule sets to distinguish organisational levels. See "Visma's Recommended Organizational Structure and its Impact on eADM".

unit@company

Company ID the unit belongs to.

Integer

No

Used when importing data from multiple companies.

manager@id, manager@name

The unit's manager.

String

No

Used for manager look-ups, approval flows, and onboarding/offboarding notifications.

tasks/task

A named task (e.g. "Attesterar", "Godkjenne fråvær") with the employees, and optionally a supervisor, assigned to it.

String

No

Used to grant task-specific access, such as approval or invoicing rights, independent of formal position.

roles/role

A named role (e.g. "Leiar", "BI tilgang") with the employees, and optionally a supervisor, assigned to it.

String

No

Used to grant role-specific access rights independent of formal position.

contactInfo/*

Postal address, visiting address, phone, and email for the unit.

String

No

Typically empty in practice; rarely used.


Understanding the QualificationCode Attribute

In HR systems like Visma Enterprise, a qualification code is a standardized tag used to record an employee’s formal education, licenses, and skills.

Instead of typing free text, HR uses these uniform codes so the system can automatically use the data for three main purposes:

  • Payroll & Tariffs: Links to job codes to ensure correct salary placement (e.g., registering a new degree automatically flags the employee for a pay raise).

  • Resource Management: Allows managers to easily track who is authorized to perform specific duties (e.g., checking who holds a valid healthcare license or heavy machinery certificate).

  • Reporting & Compliance: Provides clean data for internal competence mapping and statutory government reporting (like to Statistics Norway).

Typical Examples: "Bachelor's Degree," "HPR Authorization (Healthcare)," or "First Aid Certification."


Last updated: