Skip to main content

Inbound Integration Guide - Users and Employees

Description

This guide explains the integration of the following configuration data entities:

  • User Role
  • User
  • Employee
  • Employee Balance

Notes

note

This guide does not cover all possible integration topics. Please see the Enactor Books for detailed information.

note

See the Inbound Integration Guide - Introduction for the basics of importing and exporting data.

note

This guide will use manual import and export of data using the Enactor Estate Manager.


Overview

User Roles define user permissions through privileges.

Users are people with specific user roles who will access the system.

Employees identify employees who can make purchases.

EmployeeAccountBalance is an account to track employee purchase amounts.


Role

A user role grants specific privileges to accomplish actions. Enabling a user for a specific role grants the user all of the permissions/privileges associated with that role. Multiple user roles may be enabled for a user.

A mandatory element of the user role is the Authorisation Level for each configured role. The Authorisation Level is an arbitrary numeric value from 0 to 100 which is used to rank the different user roles.

  • In configuration/administration using the Estate Manager user interface, a user can only modify and allocate roles of an authorisation level less than or equal to the highest authorisation level of all roles assigned to them.

  • In menu selection, if multiple roles are assigned, the role with the highest authorisation level will be applied and will determine what options the user sees. This does not affect the user's available permissions, which may or may not affect visibility of options (depends on specific privileges).

XML Example

XML Example
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Batch xmlns:core="http://www.enactor.com/core"
xmlns:retail="http://www.enactor.com/retail">
<retail:role>
<retail:roleId>SALESASSIST_UK</retail:roleId>
<retail:description>Sales Assistant - UK</retail:description>
<retail:authorisationLevel>20</retail:authorisationLevel>
<retail:regionId groupHierarchyId="All" groupTypeId="region">UK</retail:regionId>
<retail:privileges>
<retail:id>enactor.pos.AuthorisesEmployeeAccountTender</retail:id>
</retail:privileges>
<retail:privileges>
<retail:id>enactor.pos.DeliveryChargeOverrideAllowed</retail:id>
</retail:privileges>
</retail:role>
</Batch>

XML Structure

XML TagParent ElementTypeDescriptionData TypeLength
roleRootOuter wrapper for the entityString
roleIdroleElementThe unique id for the roleString
descriptionroleElementThe description for the roleString
authorisationLevelroleElementA numeric value used to rank rolesInteger
regionIdroleElementThe region for the role (see groupId)groupId
privilegesroleElementA specific privilege to grant for the role
idprivilegesElementThe specific privilege to grantString

User

Users define the user accounts that control which staff can use the system. Users are granted permissions through User Roles. Users also capture information about the staff members that is required for system access.

XML Example

XML Example
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Batch xmlns:core="http://www.enactor.com/core"
xmlns:retail="http://www.enactor.com/retail">

<retail:user>
<retail:dateTimeActivated>2016-07-13T16:09:43+01:00</retail:dateTimeActivated>
<retail:displayName>Angela Beige</retail:displayName>
<retail:employeeId></retail:employeeId>
<retail:inactivityDelay>0</retail:inactivityDelay>
<retail:maintenanceInactivityDelay>0</retail:maintenanceInactivityDelay>
<retail:localeId variant="" country="GB">en</retail:localeId>
<retail:locationId>0100</retail:locationId>
<retail:password>qQ7x8zKsY25qx8fM0Q7FL04SdWraV8poxs6oFYuH8UY=YVJxp4j7rUI=</retail:password>
<retail:passwordExpiryTime>0</retail:passwordExpiryTime>
<retail:passwordLastChanged>2016-07-13T16:10:29.638+01:00</retail:passwordLastChanged>
<retail:forceChangePassword>false</retail:forceChangePassword>
<retail:strongPassword>false</retail:strongPassword>
<retail:forceAlphaNumericPassword>false</retail:forceAlphaNumericPassword>
<retail:forceMixedCasePassword>false</retail:forceMixedCasePassword>
<retail:preventPasswordReUse>false</retail:preventPasswordReUse>
<retail:minimumPasswordLength>1</retail:minimumPasswordLength>
<retail:maximumPasswordLength>20</retail:maximumPasswordLength>
<retail:userId>3100</retail:userId>
<retail:isTemplate>false</retail:isTemplate>
<retail:emailAccountName></retail:emailAccountName>
<retail:emailAddress></retail:emailAddress>
<retail:emailPassword></retail:emailPassword>

<retail:userName>
<retail:surname>Angela</retail:surname>
<retail:forename>Beige</retail:forename>
<retail:title>Mrs</retail:title>
</retail:userName>

<retail:roleId>
<retail:roleId>GIFTCARD_UK</retail:roleId>
<retail:regionId groupHierarchyId="All" groupTypeId="region">UK</retail:regionId>
</retail:roleId>
<retail:roleId>
<retail:roleId>ASSISTMANAGER_UK</retail:roleId>
<retail:regionId groupHierarchyId="All" groupTypeId="region">UK</retail:regionId>
</retail:roleId>

<retail:address>
<retail:countryCodeId></retail:countryCodeId>
<retail:typeId></retail:typeId>
<retail:isTemplate>false</retail:isTemplate>
</retail:address>
<retail:timePeriod>
<core:dayOfWeek>1</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>2</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>3</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>4</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>5</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>6</core:dayOfWeek>
</retail:timePeriod>
<retail:timePeriod>
<core:dayOfWeek>7</core:dayOfWeek>
</retail:timePeriod>

</retail:user>
</Batch>

XML Structure

user

XML TagParent ElementTypeDescriptionData TypeLength
userRootOuter wrapper for the entityString
userIduserElementThe unique id for this userString
dateTimeActivateduserElementThe first date/time this user can access the systemDateTime
dateTimeDeactivateduserElementThe last date/time this user can access the systemDateTime
displayNameuserElementThe name to display for this userString
employeeIduserElementThe employee id for this user for employee transactionsString
inactivityDelayuserElementThe number of seconds until the user is logged off the POS when inactive. 0 means unlimitedInteger5
maintenanceInactivityDelayuserElementThe number of seconds until the user is logged off the Estate Manager when inactive. 0 means unlimitedInteger5
localeIduserElementLocale to use for this userLocaleString
locationIduserElementThe location to which this user is assignedString
passworduserElementThe encrypted password for this userString
passwordExpiryTimeuserElementThe number of days before user must change password. 0 means unlimitedInteger3
passwordLastChangeduserElementDate/Time when password was last updatedDateTime
preventPasswordSimilarToUserIduserElementIf true, do not allow password similar to user id. If omitted, falseBoolean
forceChangePassworduserElementIf true, user must change password on next successful login. If omitted, falseBoolean
strongPassworduserElementIf true, password must pass strong password rules. If omitted, falseBoolean
forceAlphaNumericPassworduserElementIf true, user must have alpha and numeric characters in password. If omitted, falseBoolean
forceMixedCasePassworduserElementIf true, user password must contain upper and lower case characters. If omitted, falseBoolean
preventPasswordReUseuserElementIf true, user cannot reuse a previous password. If omitted, falseBoolean
minimumPasswordLengthuserElementIf omitted, no minimumInteger2
maximumPasswordLengthuserElementIf omitted, no maximumInteger2
disableduserElementIf true, user is not enabled and cannot access the system. If omitted, falseBoolean
disallowMultiLocationSignOnuserElementIf true, restrict user to assigned location and do not allow user to sign on at multiple locations. If omitted, falseBoolean
cardSignOnOnlyuserElementIf true, user must use card to sign in. If omitted, falseBoolean
skipPasswordIfCarduserElementIf true, if card is used, do not require a password. If omitted, falseBoolean
trainingModeuserElementIf true, user is restricted to training mode only. If omitted, falseBoolean
leftHandeduserElementIf true, identify user as left handed for some themes which use this information. If omitted, falseBoolean
shortIduserElementThe short id number for the userString
preferredAuthenticationMethoduserElementThe preferred authentication method for the user. One of the following fixed values: INTERNAL, AD. If omitted, INTERNALfixed
singleSignOnUserIduserElementUser's single sign on idString
singleSignOnCommonNameuserElementUser's single sign on nameString
disallowLockingMultiplePosuserElementIf true, do not allow user to lock multiple POS terminals. If omitted, falseBoolean
userNameuserElementThe user name details. See userNamename
roleIduserElementOne or more roles assigned to the user. See roleIdroleId
addressuserElementAddress information for the user. See addressaddress
timePerioduserElementDays the user is allowed to log in. See timePeriodtimePeriod
isTemplateuserElementIf true, user is a template. If omitted, falseBoolean

userName

XML TagParent ElementTypeDescriptionData TypeLength
userNameRootOuter wrapper for the entityString
surnameuserNameElementUser surnameString
forenameuserNameElementUser forenameString
titleuserNameElementUser titleString
initialsuserNameElementUser initialsString
sexuserNameElementUser sexString
dateOfBirthuserNameElementUser date of birthDateTime

roleId

XML TagParent ElementTypeDescriptionData TypeLength
roleIdRootOuter wrapper for the entityString
roleIdroleIdElementThe role to assign the userString
regionIdroleIdElementThe region for this role. (See groupId)groupId

address

XML TagParent ElementTypeDescriptionData TypeLength
addressRootOuter wrapper for the entityString
countryCodeIdaddressElementCountry codeString
organisationaddressElementOrganisation nameString
countyaddressElementCountyString
emailaddressElementEmail addressString
mobilePhoneaddressElementMobile phone numberString
phone1addressElementPhone numberString
phone2addressElementAdditional phone numberString
postCodeaddressElementPostal codeString
street1addressElementStreet addressString
street2addressElementAdditional street addressString
street3addressElementAdditional street addressString
townaddressElementTown/CityString
isTemplateaddressElementIf true, address is a template. If omitted, falseBoolean

timePeriod

XML TagParent ElementTypeDescriptionData TypeLength
timePeriodRootOuter wrapper for the entityString
dayOfWeektimePeriodElementThe day of the week the user is allowed to access the systemInteger
startTimetimePeriodElementThe time of day before which the user cannot access the system
hourstartTimeAttributeThe start hourInteger
minutestartTimeAttributeThe start minuteInteger
secondstartTimeAttributeThe start secondInteger
endTimetimePeriodElementThe time of day after which the user cannot access the system
hourendTimeAttributeThe end hourInteger
minuteendTimeAttributeThe end minuteInteger
secondendTimeAttributeThe end secondInteger

Employee

XML Example

XML Example
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Batch xmlns:core="http://www.enactor.com/core"
xmlns:retail="http://www.enactor.com/retail">

<retail:employee>
<retail:employeeId>1</retail:employeeId>
<retail:employeeName>
<retail:surname>Granger</retail:surname>
<retail:forename>Sam</retail:forename>
<retail:initials>S</retail:initials>
<retail:title>Mr</retail:title>
<retail:sex>MALE</retail:sex>
<retail:dateOfBirth>1964-08-17T00:00:00+01:00</retail:dateOfBirth>
</retail:employeeName>
<retail:address>
<retail:countryCodeId></retail:countryCodeId>
<retail:typeId></retail:typeId>
<retail:isTemplate>false</retail:isTemplate>
</retail:address>
<retail:employeeDiscount>0.2</retail:employeeDiscount>
<retail:employeeAllowanceDiscount>0.2</retail:employeeAllowanceDiscount>
<retail:employeeDiscountAllowance>0</retail:employeeDiscountAllowance>
<retail:normalWorkingLocationId>0001</retail:normalWorkingLocationId>
<retail:automaticEmployeeSale>false</retail:automaticEmployeeSale>

</retail:employee>

</Batch>

XML Structure

employee

XML TagParent ElementTypeDescriptionData TypeLength
employeeRootOuter wrapper for the entityString
employeeIdemployeeElementThe unique employee idString
employeeNameemployeeElementSee employeeNameemployeeName
addressemployeeElementSee addressaddress
employeeDiscountemployeeElementDecimal percentage of base discount; e.g. 20% = 0.2Float
employeeAllowanceDiscountemployeeElementDecimal percentage of premium discount until Employee Discount Allowance expires; e.g. 20% = 0.2Float
employeeDiscountAllowanceemployeeElementThe value of discount allowance, either discount value or total spending, the employee may accumulate over the reset periodInteger
normalWorkingLocationIdemployeeElementThe location id to which the associate is normally assignedString
automaticEmployeeSaleemployeeElementIf true, any sale performed at the POS by this employee will automatically be an employee saleBoolean
imageUrlemployeeElementA URL to an image for the employeeString
externalReferenceemployeeElementAn external referenceString

employeeName

XML TagParent ElementTypeDescriptionData TypeLength
employeeNameRootOuter wrapper for the entityString
surnameemployeeNameElementSurnameString
forenameemployeeNameElementForenameString
titleemployeeNameElementTitleString
initialsemployeeNameElementInitialsString
sexemployeeNameElementSexString
dateOfBirthemployeeNameElementDate of birthDateTime

Employee Account

There are 5 different types of employee accounts: Discount Balance, Discount Spend, Credit, Grade Discount Balance, and Grade Discount Spend.

This guide will cover Discount Balance and Credit which are the most common types. See the Enactor Books for more information.

XML Example

XML Example
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Batch xmlns:core="http://www.enactor.com/core"
xmlns:retail="http://www.enactor.com/retail">

<retail:employeeDiscountBalanceAccount>
<retail:accountId>1</retail:accountId>
<retail:accountType>employeeDiscountBalanceAccount</retail:accountType>
<retail:currencyId>GBP</retail:currencyId>
<retail:status>NEW</retail:status>
<retail:accountOpenedDate>2014-08-22T00:00:00+01:00</retail:accountOpenedDate>
</retail:employeeDiscountBalanceAccount>

<retail:employeeCreditAccount>
<retail:accountId>8</retail:accountId>
<retail:accountType>employeeCreditAccount</retail:accountType>
<retail:currencyId>GBP</retail:currencyId>
<retail:status>ACTIVE</retail:status>
<retail:accountOpenedDate>2016-06-22T00:00:00+01:00</retail:accountOpenedDate>
<retail:accountCreditLimit>0</retail:accountCreditLimit>
</retail:employeeCreditAccount>

</Batch>

XML Structure

employeeDiscountBalanceAccount

XML TagParent ElementTypeDescriptionData TypeLength
employeeDiscountBalanceAccountRootOuter wrapper for the entityString
accountIdemployeeDiscountBalanceAccountElementThe unique account idString
accountTypeemployeeDiscountBalanceAccountElementFixed: employeeDiscountBalanceAccountfixed
currencyIdemployeeDiscountBalanceAccountElementThe currency type for this accountString
statusemployeeDiscountBalanceAccountElementThe account status. One of the following fixed values: NEW, ACTIVE, CLOSED, SUSPENDEDfixed
accountOpenedDateemployeeDiscountBalanceAccountElementThe date the account was openedDateTime

employeeCreditAccount

XML TagParent ElementTypeDescriptionData TypeLength
employeeCreditAccountRootOuter wrapper for the entityString
accountIdemployeeCreditAccountElementThe unique account idString
accountTypeemployeeCreditAccountElementFixed: employeeCreditAccountfixed
currencyIdemployeeCreditAccountElementThe currency type for this accountString
statusemployeeCreditAccountElementThe account status. One of the following fixed values: NEW, ACTIVE, CLOSED, SUSPENDEDfixed
accountOpenedDateemployeeCreditAccountElementThe date the account was openedDateTime
accountCreditLimitemployeeCreditAccountElementThe credit limit for the account. 0 means unlimitedInteger

Role Delete

XML Example

XML Example
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Batch xmlns:core="http://www.enactor.com/core"
xmlns:retail="http://www.enactor.com/retail"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<!-- RoleKey -->
<core:entityDeleteRequest>
<core:entityKey xsi:type="retail:RoleKey">
<retail:roleId>roleId</retail:roleId>
<retail:regionId variantGroupHierarchyId="variantGroupHierarchyId" variantGroupId="variantGroupId" variantGroupTypeId="variantGroupTypeId" groupHierarchyId="groupHierarchyId" groupTypeId="groupTypeId">groupId</retail:regionId>
</core:entityKey>
</core:entityDeleteRequest>
</Batch>

XML Structure

entityDeleteRequest

XML TagParent ElementTypeDescriptionData TypeLength
entityKeyentityDeleteRequestElementString
typeentityKeyAttributeFixed: RoleKeyfixed
roleIdentityKeyElementThe role id key to deleteString
regionIdentityKeyElementThe region id for this rolegroupId

User Delete

XML Example

XML Example
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Batch xmlns:core="http://www.enactor.com/core"
xmlns:retail="http://www.enactor.com/retail"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<!-- UserKey -->
<core:entityDeleteRequest>
<core:entityKey xsi:type="retail:UserKey">USERID</core:entityKey>
</core:entityDeleteRequest>
</Batch>

XML Structure

entityDeleteRequest

XML TagParent ElementTypeDescriptionData TypeLength
entityKeyentityDeleteRequestElementThe user id to deleteString
typeentityKeyAttributeFixed: UserKeyfixed

Employee Delete

XML Example

XML Example
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Batch xmlns:core="http://www.enactor.com/core"
xmlns:retail="http://www.enactor.com/retail"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<!-- EmployeeKey -->
<core:entityDeleteRequest>
<core:entityKey xsi:type="retail:EmployeeKey">employeeId</core:entityKey>
</core:entityDeleteRequest>
</Batch>

XML Structure

entityDeleteRequest

XML TagParent ElementTypeDescriptionData TypeLength
entityKeyentityDeleteRequestElementThe employee id to deleteString
typeentityKeyAttributeFixed: EmployeeKeyfixed

Employee Account Delete

XML Example

XML Example
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Batch xmlns:core="http://www.enactor.com/core"
xmlns:retail="http://www.enactor.com/retail"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<!-- EmployeeAccountKey -->
<core:entityDeleteRequest>
<core:entityKey xsi:type="retail:EmployeeAccountKey" accountType="employeeAccountType">employeeAccountId</core:entityKey>
</core:entityDeleteRequest>
</Batch>

XML Structure

entityDeleteRequest

XML TagParent ElementTypeDescriptionData TypeLength
entityKeyentityDeleteRequestElementThe employee account id to deleteString
typeentityKeyAttributeFixed: EmployeeAccountKeyfixed
accountTypeentityKeyAttributeOne of the following fixed values: employeeDiscountBalanceAccount, employeeCreditAccountfixed