Workforce Optimization Suite: Generic - ASI - Agent Synch Interface Guide
Workforce Optimization Suite: Generic - ASI - Agent Synch Interface Guide
Release 7.6
October 2005
© 2005 Witness Systems, Inc.
Confidential and Proprietary Information of Witness Systems, Inc.
All rights reserved, worldwide.
All materials (regardless of form, and including, without limitation, software applications,
documentation, and any other information relating to Witness Systems, its products or services) are
the exclusive property of Witness Systems, Inc. Only expressly authorized individuals under
obligations of confidentiality are permitted to review materials in this document. By reviewing
these materials, you agree to not disclose these materials to any third party unless expressly
authorized by Witness Systems, and to protect the materials as confidential and trade secret
information. Any unauthorized review, retransmission, dissemination or other use of these
materials is strictly prohibited. If you are not authorized to review these materials, please return
these materials (and any copies) from where they were obtained. All materials found herein are
provided “AS IS” and without warranty of any kind. Witness, the Witness logo, Impact 360, the
Impact 360 logo, and Improve Everything are each trademarks (registered or otherwise) of Witness
Systems, Inc. Other brand and product names may be registered trademarks or trademarks of their
respective holders.
The Witness Systems, Inc. products are protected by one or more of the following U.S., European
or international patents: 5,790,798; 6,278,978; 6,370,574; 6,404,857; 6,510,220; 6,757,361;
6,782,093; European patent 0 833 489. Other U.S. and international patents pending. In addition,
these products are protected by U.S. and international copyright laws, and other intellectual
property laws and treaties. Unauthorized use, duplication, publication and distribution of all or any
portion of a product is expressly prohibited and will be prosecuted to the maximum extent provided
by law. Your rights in a Witness Systems, Inc. product (if any) are limited to the license rights
granted under the license agreement executed by you in hardcopy form (or if none, by acceptance
of the clickwrap terms included with the product). If needed, please contact your vendor for an
additional copy of those terms. All other rights, title and interest are expressly restricted and
retained by Witness Systems, Inc. and its licensors. .
Generic – ASI – Agent Synch Interface Guide
Table of Contents
Preface
Master the Complexities of Forecasting and Scheduling 6
Select Functionality that Meets Your Needs 6
Receive Guidance from World-Class Consultants 10
About This Guide 10
In This Section 11
Comments? 11
If You Need Help 12
Technical Support 13
Before You Contact Technical Support 13
Contacting Technical Support 14
Related Documents 14
Conventions 15
15
3
Sample XML File 43
Trouble Shooting 47
4
Preface
5
Master the Complexities of Forecasting and Scheduling
In today's contact center, customer call volumes are moving
targets. And when you factor in multiple sites, expanded media
options, agent proficiencies and preferences, and customer
expectations, the task of forecasting and scheduling becomes
difficult to manage without sophisticated analysis.
That's why Witness Systems offers Workforce Management, a
proven, easy-to-use set of software and services that simplifies the
complex task of forecasting and scheduling while enabling contact
centers to capitalize on the unique skills and proficiencies of every
agent. With Witness Systems’ Workforce Management, you can
reduce costs by staffing appropriately to meet your workload, drive
business growth, and improve employee effectiveness and
turnover.
Workforce Management is part of a portfolio of solutions from
Witness Systems. Long recognized for our browser-based,
multimedia quality monitoring, customer interaction recording
and compliance functionality, Witness Systems now includes the
proven Workforce Management solutions of Blue Pumpkin, a
Witness Systems Company. Thousands of users around the world
rely on our solutions each day to help them optimize their
performance and capture customer intelligence.
6
resolution, up-selling, cross-selling, and contact center customer
satisfaction. Although the specific features of the Operational and
Advanced packages differ, they include some or all of the following:
Forecasting and Scheduling—Accurate forecasting is the
critical first step in managing your workforce. Witness Systems’
Workforce Management integrates with your ACD and uploads
historical data directly from your ACD's database. Since call
volumes vary depending on marketing campaigns, seasons,
holidays, and other events, Operational Workforce Management
allows you to select, combine, and alter historical data to predict
future call volume and handle time. You can also set up profiles
to model call volume behavior for different events and
circumstances.
Unlike other forecasting and scheduling applications, Workforce
Management's patented skills-based engine incorporates the
unique skills and proficiency levels of each agent. It produces
optimal schedules down to the quarter hour by balancing the
defined shift rules, work patterns, breaks, off-phone times,
agent preferences, agent skills, and targeted service level goals.
By matching the right agents with the right customers,
productivity increases–and so do agent and customer
satisfaction. And when your staffing levels precisely match your
contact volumes, costs go down. For example, you can:
– Schedule single, multiple, or virtual contact centers across all
time zones
– Accommodate a dedicated, blended, or task-switching work
environment
– Schedule meetings or training without impacting service levels
– Automate compliance with government and union regulations
through a comprehensive set of work rules
– Create schedules based on skill priorities that align with your
call routing strategy
– Evaluate different “what if” scenarios, such as full-time versus
part-time, to ensure that you have the right resources to meet
the expected demand
– Create and schedule teams as a unit to support training and
accommodate employee concerns, such as carpooling or
childcare arrangements
7
Adherence—To help you manage and fine-tune your service
levels throughout the day, Operational Workforce Management
monitors adherence to schedule and shows you who's on the
phone and who's not, so you can take corrective action right
away. The intraday “Pulse” feature provides a real-time,
graphical view of forecasted, actual, and predicted call volume,
handle time, service level statistics, and other critical
information. You can configure alerts to notify users of
deviations from plan and use trends to reforecast, reschedule,
and proactively take appropriate staffing corrective actions.
Advanced Workforce Management goes a step further by
providing a complete view of adherence that shows all agent
activities, including front- and back-office tasks such as fax and
paper mail. Your supervisors receive instant alerts for out-of-
adherence states, enabling them to correct problems right away
while receiving a true picture of shrinkage in your contact
center.
Contact Center Monitoring and Management—No matter
how carefully you plan, change is a constant in the contact
center. To help you continuously fine-tune your operations,
Witness Systems Workforce Management’s intraday “Pulse”
feature provides a graphical view of contact volume, handle
times, service level statistics, agent adherence levels, and other
critical information. With Pulse, you can:
– Monitor key metrics that get updated with each fresh batch of
data from the ACD
– Track and compare actual, forecasted, and required statistics
by individual queue or combined queue
– View deviations of key contact center metrics in percentages or
absolute numbers
– View intraday trends and historical data
Our Advanced Workforce Management solutions provide a
complete view of all agent activities, including front- and back-
office tasks, such as handling faxes and traditional mail. Your
supervisors receive instant alerts for out-of-adherence states,
enabling them to correct problems right away while receiving a
true picture of shrinkage in your contact center. Better still,
8
intraday management capabilities display trends, enabling you
to reforecast and reschedule for the remainder of the day.
Witness Systems’ Workforce Management includes role-
appropriate scorecards that display actual employee
performance metrics. Our advanced solutions include an
extensive set of predefined key performance indicators (KPIs),
enabling your contact center staff to see how they're performing
against their goals. This visibility into performance can motivate
your staff to improve while enabling managers to identify trends
and take the appropriate action.
Web-based Agent Self-Service—Witness Systems
Workforce Management lets agents easily manage and
contribute to their own schedules without impacting service
levels. By bringing Workforce Management to the agent
desktop, you can build agent morale and retention while
enabling your managers to focus on more critical areas, such as
coaching and performance-related tasks.
Using any Web browser, agents can securely:
– Request vacations and other types of time off, even down to
portions of a day. (This applies to centers that use seniority or
rank as part of their scheduling practices.)
– Set preferences for days off and start times. Agents indicate
their first, second, and third choices for start times for each
day of the week. The scheduling algorithm balances these
preferences and then develops a schedule that optimizes
center and agent requirements.
– Swap shifts. Agents can post, negotiate, and request shift
swaps via an online Swap Board. Swap requests are screened
by Workforce Management's conflict checker and forwarded
to managers for quick and easy processing.
– View schedule and time-off information. With just a glance,
agents can get a summary of their schedules for the week and
the status of their shift swap, time off, and vacation requests.
Actionable Learning—To help your agents develop their
skills and career paths, Witness Systems Workforce
Management enables you to produce your own library of best
practices from recorded customer interactions. By leveraging
your finest examples of customer service, you can help your
9
agents learn valuable skills and procedures. A browser-based
interface allows agents to take training right at their desktops, in
a classroom, or remotely.
Supervisors select the appropriate training sessions from a
library of courseware, assign the training to agents, monitor
completion, and track the effectiveness of the training over time.
A flexible system of access rights enables supervisors to browse
through course completion reports and subsequent agent
performance records for individual students, teams, or contact
centers. This enables you to determine areas for individual or
group improvement and take action. It's an efficient, consistent
way to handle training across your entire enterprise.
http://www.witness.com/support
10
This guide is not intended to teach the basics of computer or
software operation or use, and does not contain tutorial
information. It is assumed that you are experienced in working
with contact center equipment and software applications as well as
PC workstation hardware and software.
Please note that this document is intended primarily for
viewing on-line. However, the format of the document is based
on that of a printed manual, to support customers who print all or
portions of the document. For similar reasons, entries in the Table
of Contents and cross references refer to page numbers. Those
same entries function as hyperlinks for ease of use when the
document is viewed electronically.
Colors may not print legibly on black and white printers. If you are using
a non-color printer, select the option to print colors as black.
In This Section
This section contains the following information:
How to send Witness Systems comments about this document.
See page 11.
How to get help. See page 12.
How to contact Witness Systems Technical Support. See page
13.
Related Documents. See page 14.
Conventions used in this manual. See page 15.
Comments?
Witness Systems, Inc. believes that the documentation for a
product is an integral part of the product itself. We know that the
quality of this document can affect the overall quality and usability
11
of the Witness Systems product which it documents. Therefore, we
are continuously looking for ways to improve our product
documentation. Your comments are valuable and will be carefully
considered before publishing the next release of this document. If
you find any errors, or have suggestions for improvements to this
document, please contact Witness Systems at:
http://www.witness.com/support
Information accessible?
Information complete?
Illustrations adequate?
Other comments. Please include page numbers and section titles where
appropriate.
12
Witness Systems, Inc.’s World-Wide-Web site: This facility
allows users world wide fast access to product information,
marketing and sales information, information about the company,
technical documentation, support case management, and support
solutions information.
Direct Internet FTP: This facility greatly speeds up transfer of
new and upgraded software to all Witness Systems customers.
Technical Support
Help from Technical Support is as near as your keyboard or your
telephone. However, before you contact us, please read the
following section. We can provide faster and better service if you
have certain information available when you contact us.
13
– Has this problem occurred previously? If it is new, did you
change your system configuration recently?
3 Log on to the Technical Support eSupport web page at
http//www.witness.com/support.
Europe/Middle East/
Americas
Africa/Asia Pacific
http//www.witness.com/support
(If you are reading this manual on-line, click on the URL above to
activate your web browser and go to the eSupport page.
Related Documents
For further information about the Witness Workforce
Optimization Suite, see the following Witness Systems document:
Witness Workforce Optimization Suite Administration Guide
14
Conventions
The following table shows the conventions that are used in this
manual.
Convention How Used
blue Notes in this document are in blue and are indicated by the
following symbol:
user entry Bold text in an example shows text or commands that you
should enter. It also distinguishes software function terms and
commands, library names, file names, and directory path
names.
Example: Type a:\install.
user variable Italic and bold screen text shows a variable that you are to
replace with an actual value, such as a number or name.
Example: enter C:\<directory name>
15
16
Generic – ASI – Agent Synch Interface
Related Documents
The following documents contain information that may be helpful
when using this interface.
Witness Workforce Optimization Suite Administration Guide
Prerequisites
This section contains information you should know and directions
you must follow before using the Generic – ASI – Agent Synch
Interface software.
Software Before you use the Generic – ASI – Agent Synch Interface, ensure
that the following software application is already installed on its
own server.
Witness Workforce Optimization Suite version 7.6.
17
Configuration
To configure the Generic – ASI – Agent Synch Interface, you add
the package to your Integration Server configuration, and complete
the tabs that are associated with its components.
For more information about how to add an integration package to
your Integration Server, refer to the Witness Workforce
Optimization Suite Administration Guide.
18
The following table lists the configuration parameters and briefly
describes each of them:
Parameter Description
Input File Path The path of the file to import.
If the path is not in UNC format, the drive location is
assumed to be on the Integration Server server.
The user account running the Integration Server
service must have read privileges to this path.
Input File Extension The file name extension. Only file names ending with
this extension are selected for import.
Organization Name The name of the organization with which the
employees are to be synched. This parameter is used
only if the organization name is missing from the input
XML file.
19
The following table describes the advanced configuration
parameters for this interface:
Parameter Description
MAX_EMPLOYEE_END_DATE If the employee element in the xml file does
not contain an end date, the value of this
parameter is used for the end date. The
format is fixed: yyyy-MM-dd HH:mm:ss
where the time is in 24-hr format.
ARCHIVE_DIR The path of the folder in which to archive the
imported files. If the path is left blank, the
files are archived in the folder
Input File Path\archive
where Input File Path is the path specified
by the Input File Path parameter.
DAYS_TO_ARCHIVE The number of daysto keep the archive files
in the ARCHIVE_DIR folder. Files older than
the specified number of days are deleted.
GENERIC_SYNC The java class that implements the agent
synch.
GENERIC_SYNC_READER The java class that implements the agent
synch.
Importing Files
The interface can import files on demand or by when triggered by a
timer. You can import the files by clicking the Import Now button
on the Monitor tab of the interface, or by configuring the timer
component, as shown in the graphics below:
20
Import Now:
Timer Component:
21
XSD File
The structure of the XML file is specified in an xml schema file,
which is located in:
Install
Dir\FusionExchange\Plugins\OrgSync\config\orgsync_5_0.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jm="http://ispsoft.de/namespaces/jaxme/schema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xml:lang="EN">
<xs:annotation>
<xs:documentation>XML schema for 7.6.x Agent Sync.</
xs:documentation>
<xs:appinfo>
<jm:defaults
package="com.bluepumpkin.Plugins.OrgSync.generated"
accessors="true"/>
</xs:appinfo>
</xs:annotation>
<xs:element name="SyncMethod">
<xs:annotation>
<xs:appinfo>
<jm:javasource class="ClsSyncMethod">
public com.bluepumpkin.Plugins.OrgSync.SyncMode
convert()
{
if( this.getCreate() != null ) return
com.bluepumpkin.Plugins.OrgSync.SyncMode.CREATE;
if( this.getDelete() != null ) return
com.bluepumpkin.Plugins.OrgSync.SyncMode.DELETE;
if( this.getUpdate() != null ) return
com.bluepumpkin.Plugins.OrgSync.SyncMode.UPDATE;
if( this.getSnapshot() != null ) return
com.bluepumpkin.Plugins.OrgSync.SyncMode.SNAPSHOT;
if( this.getSnapshot_without_delete() != null ) return
com.bluepumpkin.Plugins.OrgSync.SyncMode.SNAPSHOT_WITHOUT
_DELETE;
return
com.bluepumpkin.Plugins.OrgSync.SyncMode.CREATE;
}
22
</jm:javasource>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="create" type="xs:string"/>
<xs:element name="update" type="xs:string"/>
<xs:element name="delete" type="xs:string"/>
<xs:element name="snapshot" type="xs:string"/>
<xs:element name="snapshot_without_delete"
type="xs:string"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="key">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="nameQualifier" type="xs:string"
minOccurs="0" />
<xs:element name="value" type="xs:string"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="LookupKey">
<xs:complexType>
<xs:sequence>
<xs:element ref="key" minOccurs="1"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="EmployeeSupervisor">
<xs:annotation>FirstName,LastName,EmployeeNumber,SocialSecuri
ty and Badge are the key names supported for supervisor lookup</
xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="key" minOccurs="1"
maxOccurs="unbounded"/>
23
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Scope">
<xs:complexType>
<xs:choice>
<xs:element name="Organization" type="xs:string"/>
<xs:element name="Campaign" type="xs:string"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="EmployeeRole">
<xs:complexType>
<xs:sequence>
<xs:element name="UserName" type="xs:string"/>
<xs:element name="Role" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element ref="Scope" minOccurs="1"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="RateType">
<xs:complexType>
<xs:choice>
<xs:element name="hourly" type="xs:boolean"/>
<xs:element name="monthly" type="xs:boolean"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="EmployeeWage">
<xs:complexType>
<xs:sequence>
<xs:element name="Wage" type="xs:double"/>
<xs:element name="CurrencyCode" type="xs:string" />
24
<xs:element ref="RateType" />
<xs:element name="StartDate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="EmployeeUserProperty">
<xs:complexType>
<xs:sequence>
<xs:element name="User1" type="xs:string"
minOccurs="0"/>
<xs:element name="User2" type="xs:string"
minOccurs="0"/>
<xs:element name="User3" type="xs:string" minOccurs="0"/>
<xs:element name="User4" type="xs:string" minOccurs="0"/>
<xs:element name="User5" type="xs:string" minOccurs="0"/>
<xs:element name="User6" type="xs:string" minOccurs="0"/>
<xs:element name="User7" type="xs:string" minOccurs="0"/>
<xs:element name="User8" type="xs:string" minOccurs="0"/>
<xs:element name="User9" type="xs:string" minOccurs="0"/>
<xs:element name="User10" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="EmployeeJobTitle">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="StartDate" type="xs:date" />
<xs:element name="EndDate" type="xs:date"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="EmployeeTimeOff">
<xs:complexType>
<xs:sequence>
<xs:element name="ActivityName" type="xs:string"/>
<xs:element name="HoursPerDay" type="xs:double"/>
<xs:element name="HoursPerWeek" type="xs:double"/>
<xs:element name="HoursPerYear" minOccurs="0"
maxOccurs="unbounded">
25
<xs:complexType>
<xs:sequence>
<xs:element name="Hours" type="xs:double" />
<xs:element name="Year" type="xs:integer" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="EmployeeDataSource">
<xs:complexType>
<xs:sequence>
<xs:element name="DataSourceName" type="xs:string" />
<xs:element name="ExternalEmpIdent" type="xs:string"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PersonAddress">
<xs:complexType>
<xs:sequence>
<xs:element name="AddressLine1" type="xs:string"
minOccurs="0"/>
<xs:element name="AddressLine2" type="xs:string"
minOccurs="0"/>
<xs:element name="AddressLine3" type="xs:string"
minOccurs="0"/>
<xs:element name="City" type="xs:string"
minOccurs="0"/>
<xs:element name="StateName" type="xs:string"
minOccurs="0"/>
<xs:element name="ZipCode" type="xs:string"
minOccurs="0"/>
<xs:element name="Country" type="xs:string"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ContactType">
<xs:complexType>
<xs:choice>
<xs:element name="workphone" type="xs:boolean"/>
26
<xs:element name="mobilephone" type="xs:boolean"/>
<xs:element name="homephone" type="xs:boolean"/>
<xs:element name="phone" type="xs:boolean"/>
<xs:element name="email" type="xs:boolean"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="PersonContact">
<xs:complexType >
<xs:sequence>
<xs:element ref="ContactType" />
<xs:element name="Value" type="xs:string"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Person">
<xs:complexType>
<xs:sequence>
<xs:element ref="PersonAddress" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="PersonContact" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SkillClassification">
<xs:complexType>
<xs:choice>
<xs:element name="primary" type="xs:boolean"/>
<xs:element name="reserve1" type="xs:boolean"/>
<xs:element name="reserve2" type="xs:boolean"/>
27
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="SkillAssignment">
<xs:complexType>
<xs:sequence>
<xs:element name="Skill" type="xs:string"/>
<xs:element name="StartTime" type="xs:dateTime"/>
<xs:element name="EndTime" type="xs:dateTime"
minOccurs="0"/>
<xs:element name="Proficiency" type="xs:float"/>
<xs:element name="Priority" type="xs:integer"/>
<xs:element name="Reserve" type="xs:boolean"/>
<xs:element ref="SkillClassification"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="AdditionalInfo">
<xs:complexType >
<xs:sequence>
<xs:element ref="Person" minOccurs="0" />
<xs:element ref="EmployeeDataSource" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="EmployeeTimeOff" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="EmployeeUserProperty" minOccurs="0"/
>
<xs:element ref="EmployeeJobTitle" minOccurs="0" />
<xs:element ref="EmployeeWage" minOccurs="0" />
<xs:element ref="EmployeeSupervisor" minOccurs="0" />
<xs:element ref="EmployeeRole" minOccurs="0" />
<xs:element ref="SkillAssignment" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Employee">
<xs:annotation>
<xs:appinfo>
<jm:javasource class="ClsEmployee">
public java.lang.String toString()
{
28
java.lang.StringBuffer buf = new
java.lang.StringBuffer();
buf.append( "[first=" );
buf.append( this.getFirstName() );
buf.append( ";last=" );
buf.append( this.getLastName() );
buf.append( ";" );
buf.append( this.getLastName() );
buf.append( ";ssn=" );
buf.append( this.getSocialSecurity() );
buf.append( ";empno=" );
buf.append( this.getEmployeeNumber() );
buf.append( "]" );
return buf.toString();
}
</jm:javasource>
</xs:appinfo>
</xs:annotation>
<xs:complexType >
<xs:sequence>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
<xs:element name="StartDate" type="xs:date"
minOccurs="0"/>
<xs:element name="IsSupervisor" type="xs:boolean"
minOccurs="0"/>
<xs:element name="MiddleInitial" type="xs:string"
minOccurs="0"/>
<xs:element name="Suffix" type="xs:string"
minOccurs="0"/>
<xs:element name="SocialSecurity" type="xs:string"
minOccurs="0"/>
<xs:element name="BirthDay" type="xs:date"
minOccurs="0"/>
<xs:element name="EndDate" type="xs:date"
minOccurs="0"/>
<xs:element name="Badge" type="xs:string"
minOccurs="0"/>
<xs:element name="Rank" type="xs:integer"
minOccurs="0"/>
<xs:element name="EmployeeNumber" type="xs:string"
minOccurs="0"/>
<xs:element name="EmployeeCallCenter" type="xs:string"
minOccurs="0"/>
29
<xs:element name="MinPaidHours" type="xs:double"
minOccurs="0"/>
<xs:element name="MaxPaidHours" type="xs:double"
minOccurs="0"/>
<xs:element ref="AdditionalInfo" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SkillList">
<xs:complexType>
<xs:sequence>
<xs:element name="OrganizationName" type="xs:string"
minOccurs="0"/>
<xs:element ref="SyncMethod"/>
<xs:element ref="Skill" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="EmployeeList">
<xs:annotation>FirstName,LastName,EmployeeNumber,SocialSecuri
ty and Badge are the key names supported for employee lookup</
xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="OrganizationName" type="xs:string"
minOccurs="0"/>
<xs:element ref="SyncMethod"/>
<xs:element ref="LookupKey"/>
<xs:element ref="Employee" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element ref="SkillList" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element ref="EmployeeList" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
30
</xs:schema>
XML File
The following section describes the XML elements that are synched
into the database. The specifications can be found in the XSD
mentioned previously.
Some points to note
Element names are case sensitive; they should have the same
case as specified in the XSD.
If there are any elements in the XML that are not defined in the
XSD, or if there is a case mismatch, the interface ignores them
silently.
The date elements in the XML have the format yyyy-mm-dd;
time has a 24-hr format HH:mm:ss.
Elements or attributes with Boolean data types can have values
true or false.
The Root Element The root node has two main elements namely
SkillList – List of all skills
EmployeeList – List of all employees
You can synch more than one of these elements; the XML is shown
below:
<root>
<SkillList></SkillList>
<SkillList></SkillList>
<EmployeeList></EmployeeList>
<EmployeeList></EmployeeList>
</root>
The XML must ensure that when you synch multiple elements they
do not cause any conflicts.
For example, one EmployeeList might create 10 employees and
another list could delete all 10 employees.
31
SyncMethod – The synch mode.
LookupKey – A set of keys to use for looking up employees.
Employee – A list of employees to synch.
32
If the interface finds that there are more employees in the
database than those specified in the XML, the additional
employees are deleted.
This mode should be used with caution. If, for some reason, the
XML contains no employees, all employees in the database will
be deleted.
33
In the above example, the interface does a lookup based on
FirstName and LastName of the employee. For each employee in
the database, it matches the FirstName and LastName from the
database with the one specified in the XML. See the specification of
the XML element Employee for FirstName and LastName.
Employee: This is the main element that contains all the employee
information. It is mandatory, and contains two sections:
basic – contains basic information such as Firstname,
LastName, etc.
34
AdditionalInfo The AdditionalInfo element consists of several subelements as
shown below, all of them optional.
< AdditionalInfo>
<EmployeeSupervisor/>
<EmployeeRole/>
<EmployeeWage/>
<EmployeeUserProperty/>
<EmployeeJobTitle/>
<EmployeeTimeOff/>
<EmployeeDataSource/>
<Person/>
<SkillAssignment/>
</AdditionalInfo>
35
</key>
</EmployeeSupervisor>
See the graphic of the Profiles tab on page 35 for the supervisor
that is assigned.
EmployeeRole
36
</Role>
</EmployeeRole>
EmployeeWage
You can see the wage information in the Profiles tab shown on
page 35.
EmployeeUserProperty
37
<User10>utest_user_10</User10>
</EmployeeUserProperty>
EmployeeJobTitle
After the synch, you can view this information in the Profiles tab
for the user.
EmployeeTimeOff
38
</EmployeeTimeOff>
You can check that these values were synched correctly in the
Time Off tab of the People module:
EmployeeDataSource
To synch the employee data source, use the XML below. Note
that the value of the element DataSourceName should exist. See
the Data Sources section of the General Setup module if the data
source is configured.
<EmployeeDataSource>
<DataSourceName>avaya_cms</DataSourceName>
<ExternalEmpIdent>1234</ExternalEmpIdent>
</EmployeeDataSource>
Person
39
<PersonContact>
<Value>(408)-123-3452</Value>
<ContactType>
<homephone/>
</ContactType>
</PersonContact>
<PersonContact>
<Value>(650)-546-1223</Value>
<ContactType>
<mobilephone/>
</ContactType>
</PersonContact>
<PersonContact>
<Value>[email protected]</Value>
<ContactType>
<email/>
</ContactType>
</PersonContact>
<PersonAddress>
<AddressLine1>addr 1</AddressLine1>
<AddressLine2>addr 2</AddressLine2>
<AddressLine3>addr 3</AddressLine3>
<City>santa clara</City>
<StateName>ca</StateName>
<ZipCode>911034</ZipCode>
<Country>u s a</Country>
</PersonAddress>
</Person>
40
SkillAssignment
To assign the employee with different skills, use the XML shown
below. The value of the Skill element is the skill name. The skill
should exist; use Witness Forecasting and Scheduling to obtain
a list of available skills.
<SkillAssignment>
<Skill>async_skill_3</Skill>
<StartTime>2005-02-23 21:00:00</StartTime>
<EndTime>2035-02-23 21:00:00</EndTime>
<Proficiency>8</Proficiency>
<Priority>2</Priority>
<Reserve>true</Reserve>
<SkillClassification>
<reserve2/>
</SkillClassification>
</SkillAssignment>
Skill Information The XML shown below adds skills to the specified organization.
The OrganizationName should exist in order to synch successfully.
<SkillList>
<SyncMethod>
<snapshot/>
</SyncMethod>
<OrganizationName>Your Company Name</
OrganizationName>
<Skill>
<Name>async_skill_3</Name>
<Description>Agent sync test skill 3</Description>
</Skill>
</SkillList>
41
2 To convert a 3.x version’s XML file to the XML used in 4.5.x,
enter the following text into the Command Line field of the
batch extender, making any path modifications necessary for
your situation.
java -cp ..\lib\xerces.jar;..\lib\xalan.jar
org.apache.xalan.xslt.Process -in
"plugins\OrgSync\config\XSLT\sampleIO\InputTest1.xml" -xsl
"Plugins\OrgSync\config\XSLT\AgentSync30to45.xsl" -out
"T:\temp\reports\async\cnv.xml"
The -in argument is the location of the input xml file; change it as
required for your situation.
The -out argument is the location of the converted file. Make sure the
directory is same as the Input File Path setting of the interface.
This converter can convert only one file with a fixed name. If there are
multiple files or files with a different name, they must be concatenated
and renamed to the path specified by the -in argument.
At this point, the 4.5.x XML is compatible with version 7.6, with
the caveat that any changes to the XML since version 4.5.x may
make your results different than expected. The following section
lists the changes implemented for the various versions; you can
manually edit your XML if desired to remove or add items to keep
your XML in synch with the interface.
42
Version 4.5.0
The interface cannot synch terminated employees correctly. If
the input XML file contains a terminated employee, it creates a
new one instead of updating the terminated employee in the
database. This is because the lookup is done for the current day;
because the employee has been terminated, the lookup does not
return the terminated employee.
Version 4.6.1
The element EmployeeCallCenter in the Employee element is
deprecated. This was used to move employees from one
organization to another. In the 4.6.1 version, the EmployeeList
determines the employee's organization.
Added the snapshot_with_delete mode to the SyncMode
element.
Version 7.6
Added new element nameQualifier to the LookupKey.
Use this key to look up an employee assigned to a data source.
For example, using the data source Avaya CMS:
<LookupKey>
<key>
<name>DataSourceIdent</name>
<nameQualifier>Avaya CMS</nameQualifier>
</key>
</LookupKey>
<root xmlns:jm="http://ispsoft.de/namespaces/jaxme/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance"
xsi:noNamespaceSchemaLocation="Plugins\OrgSync\config\orgsyn
c_5_0.xsd">
<SkillList>
43
<SyncMethod>
<snapshot/>
</SyncMethod>
<OrganizationName>Your Company Name</
OrganizationName>
<Skill>
<Name>async_skill_3</Name>
<Description>Agent sync test skill 3</Description>
</Skill>
</SkillList>
<EmployeeList>
<OrganizationName>Your Company Name</
OrganizationName>
<SyncMethod>
<snapshot_without_delete/>
</SyncMethod>
<LookupKey>
<key>
<name>FirstName</name>
</key>
<key>
<name>LastName</name>
</key>
</LookupKey>
<Employee>
<FirstName>utest_fname_1</FirstName>
<LastName>utest_lname_1</LastName>
<IsSupervisor>false</IsSupervisor>
<MiddleInitial>Y</MiddleInitial>
<Suffix>Jr.</Suffix>
<SocialSecurity>000-000-6789</SocialSecurity>
<BirthDay>1936-12-17</BirthDay>
<StartDate>2005-02-23 21:00:00</StartDate>
<EndDate>2025-12-17 21:00:00</EndDate>
<Badge>BD1</Badge>
<Rank>2</Rank>
<EmployeeNumber>EMP004</EmployeeNumber>
<MinPaidHours>7</MinPaidHours>
<MaxPaidHours>10</MaxPaidHours>
<AdditionalInfo>
<EmployeeSupervisor>
<key>
<name>FirstName</name>
<value>utest_first_sup</value>
44
</key>
<key>
<name>LastName</name>
<value>utest_last_sup</value>
</key>
</EmployeeSupervisor>
<EmployeeRole>
<UserName>utest_user</UserName>
<Role>
<Name>Agent</Name>
<Scope>
<Organization>Your Company
Name</Organization>
</Scope>
</Role>
</EmployeeRole>
<EmployeeWage>
<Wage>100</Wage>
<StartDate>2005-02-23 21:00:00</
StartDate>
<CurrencyCode>USD</CurrencyCode>
<RateType>
<hourly/>
</RateType>
</EmployeeWage>
<EmployeeUserProperty>
<User1>utest_user_1</User1>
<User2>utest_user_2</User2>
<User3>utest_user_3</User3>
<User4>utest_user_4</User4>
<User5>utest_user_5</User5>
<User6>utest_user_6</User6>
<User7>utest_user_7</User7>
<User8>utest_user_8</User8>
<User9>utest_user_9</User9>
<User10>utest_user_10</User10>
</EmployeeUserProperty>
<EmployeeJobTitle>
<Name>Job Title - 1</Name>
<StartDate>2005-02-23 21:00:00</
StartDate>
<EndDate>2035-02-23 21:00:00</EndDate>
45
</EmployeeJobTitle>
<EmployeeTimeOff>
<ActivityName>Vacation</ActivityName>
<HoursPerDay>1.0</HoursPerDay>
<HoursPerWeek>3.0</HoursPerWeek>
<HoursPerYear>
<Hours>120.2</Hours>
<Year>2005</Year>
</HoursPerYear>
</EmployeeTimeOff>
<EmployeeDataSource>
<DataSourceName>avaya_cms</
DataSourceName>
<ExternalEmpIdent>1234</
ExternalEmpIdent>
</EmployeeDataSource>
<Person>
<PersonContact>
<Value>(408)-830-5577</Value>
<ContactType>
<workphone/>
</ContactType>
</PersonContact>
<PersonContact>
<Value>(408)-123-3452</Value>
<ContactType>
<homephone/>
</ContactType>
</PersonContact>
<PersonContact>
<Value>(650)-546-1223</Value>
<ContactType>
<mobilephone/>
</ContactType>
</PersonContact>
<PersonContact>
<Value>[email protected]</Value>
<ContactType>
<email/>
</ContactType>
</PersonContact>
<PersonAddress>
<AddressLine1>addr 1</AddressLine1>
<AddressLine2>addr 2</AddressLine2>
46
<AddressLine3>addr 3</AddressLine3>
<City>santa clara</City>
<StateName>ca</StateName>
<ZipCode>911034</ZipCode>
<Country>u s a</Country>
</PersonAddress>
</Person>
<SkillAssignment>
<Skill>async_skill_3</Skill>
<StartTime>2005-02-23 21:00:00</
StartTime>
<EndTime>2035-02-23 21:00:00</EndTime>
<Proficiency>8</Proficiency>
<Priority>2</Priority>
<Reserve>true</Reserve>
<SkillClassification>
<reserve2/>
</SkillClassification>
</SkillAssignment>
</AdditionalInfo>
</Employee>
</EmployeeList>
</root>
Trouble Shooting
If the synch fails, it displays an error message in the status area of
the package’s Monitor tab.
47
48