Skip to main content

Inbound Integration Guide - Users and Employees

Description

This How-to guide explains the integration of following configuration data entities.

  • User Role
  • User
  • Employee
  • Employee Balance

Notes

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

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

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.

Employee identify employees who can make purchases.

EmployeeAccountBalance is an account to track employee purchase amounts.

Role

A user role grant 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 many not affect visibility of options (depends on specific privileges).

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 privileges to grant for the role
idprivilegesElementthe specific privilege to grantString

User

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

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
dateTime
Activated
userElementThe first date/time this user can access the systemDate
Time
dateTime
Deactivated
userElementThe last date/time this user can access the systemDate
Time
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 unlimited
Integer5
maintenance
InactivityDelay
userElementThe number of seconds until the user is logged off the Estate Manager when inactive
0 means unlimited
Integer5
localeIduserElementLocale to use for this userLocale
String
locationIduserElementThe location to which this user is assignedString
passworduserElementThe encrypted password for this userString
password
ExpiryTime
userElementThe number of days before user must change password.
0 means unlimited
Integer3
passwordLast
Changed
userElementDate/Time when password was late updatedDate
Time
preventPassword
SimilarToUserId
userElementif true, do not allow password similar to user id
if omitted, false
Boolean
forceChange
Password
userElementif true, user must change password on next successful login
if omitted, false
Boolean
strongPassworduserElementif true, password must pass strong password rules
if omitted, false
Boolean
forceAlphNumeric
Password
userElementif true, user must have alpha and numeric characters in password
if omitted, false
Boolean
forceMixedCase
Password
userElementif true, user password must contain upper and lower case characters
if omitted, false
Boolean
preventPassword
ReUse
userElementif true, user cannot reuse a previous password
if omitted, false
Boolean
minimumPassword
Length
userElementif omitted, no minimumInteger2
maximumPassword
Length
userElementif omitted, no maximumInteger2
disableduserElementif true, user is not enabled and cannot access the system
if omitted, false
Boolean
disallowMulti
LocationSignOn
userElementif true, restrict user to assigned location and do not allow user to sign on at multiple locations
if omitted, false
Boolean
cardSign
OnOnly
userElementif true, user must use card to sign in
if omitted, false
Boolean
skipPassword
IfCard
userElementif true, if card is used, do not require a password
if omitted, false
Boolean
trainingModeuserElementif true, user is restricted to training mode only
if omitted, false
Boolean
leftHandeduserElementif true, identify user as left handed for some themes which use this information
if omitted, false
Boolean
shortIduserElementThe short id number for the userString
preferred
Authentication
Method
userElementThe preferred authentication method for the user; One of the following fixed values: INTERNAL, AD
if omitted, INTERNAL
fixed
singleSignOn
UserId
userElementuser's single sign on idString
singleSignOn
CommonName
userElementuser's single sign on nameString
disallowLocking
MultiplePos
userElementif true, do not allow user to lock multiple POS terminals
if omitted, false
Boolean
userNameuserElementThe user name details
see name
name
roleIduserElementOne or more roles assigned to the user
see roleId
roleId
addressuserElementAddress information for the user
see address
address
timePerioduserElementDays the user is allowed to log in
see timePeriod
time
Period
isTemplateuserElementif true, user is a template
if omitted, false
Boolean

userName

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

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
phone2addressElementAdd'l phone numberString
postCodeaddressElementPostal codeString
street1addressElementStreet addressString
street2addressElementAdd'l street addressString
street3addressElementAdd'l street addressString
townaddressElementTown/CityString
isTemplateaddressElementif true, address is a template
if omitted, false
Boolean

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 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 employeeNameemployee
Name
addressemployeeElementsee addressaddress
employeeDiscountemployeeElementDecimal percentage of base discount; e.g. 20% = 0.2Float
employeeAllowance
Discount
employeeElementDecimal percentage of premium discount until Employee Discount Allowance expires; e.g. 20% = 0.2Float
employeeDiscount
Allowance
employeeElementThe value of discount allowance, either discount value or total spending, the employee may accumulate over the reset periodInteger
normalWorking
LocationId
employeeElementThe location id to which the associate is normally assignedString
automaticEmployee
Sale
employeeElementif true, any sale performed by 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 birthDate
Time

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 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
employeeDiscount
BalanceAccount
RootOuter wrapper for the entityString
accountIdemployeeDiscount
BalanceAccount
ElementThe unique account idString
accountTypeemployeeDiscount
BalanceAccount
ElementFixed: employeeDiscountBalanceAccountfixed
currencyIdemployeeDiscount
BalanceAccount
ElementThe currency type for this accountString
statusemployeeDiscount
BalanceAccount
ElementThe account status. One of the following fixed values: NEW, ACTIVE, CLOSED, SUSPENDEDfixed
accountOpened
Date
employeeDiscount
BalanceAccount
ElementThe date the account was openedDate
Time

employeeCreditAccount

XML TagParent ElementTypeDescriptionData TypeLength
employeeCredit
Account
RootOuter wrapper for the entityString
accountIdemployeeCredit
Account
ElementThe unique account idString
accountTypeemployeeCredit
Account
ElementFixed: employeeCreditAccountfixed
currencyIdemployeeCredit
Account
ElementThe currency type for this accountString
statusemployeeCredit
Account
ElementThe account status. One of the following fixed values: NEW, ACTIVE, CLOSED, SUSPENDEDfixed
accountOpened
Date
employeeCredit
Account
ElementThe date the account was openedDate
Time
accountCreditLimitemployeeCredit
Account
ElementThe credit limit for the account
0 means unlimited
Integer

Role Delete

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
entityKeyentityDelete
Request
ElementString
typeentityKeyAttributeFixed:RoleKeyfixed
roleIdentityKeyElementThe role id key to deleteString
regionIdentityKeyElementThe region id for this rolegroupId

User Delete

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
entityKeyentityDelete
Request
ElementThe user id to deleteString
typeentityKeyAttributeFixed:UserKeyfixed

Employee Delete

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
entityKeyentityDelete
Request
ElementThe employee id to deleteString
typeentityKeyAttributeFixed:EmployeeKeyfixed

Employee Account Delete

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
entityKeyentityDelete
Request
ElementThe employee account id to deleteString
typeentityKeyAttributeFixed:EmployeeAccountKeyfixed
accountTypeentityKeyAttributeOne of the following fixed values:
employeeDiscountBalanceAccount
employeeCreditAccount
fixed