Data Connect Manual
Document: 272.01B — Qmatic
Copyright Notice
The information in this document is subject to change without prior notice and does not represent a commitment on the part of Q-MATIC AB. All efforts have been made to ensure the accuracy of this manual, but Q-MATIC AB cannot assume any responsibility for any errors and their consequences. This manual is copyrighted and all rights are reserved. Reproduction is not allowed without written permission from Q-MATIC AB.
COPYRIGHT © Q-MATIC AB, 2023. Feedback and questions: documentation@qmatic.com.
1. What’s New
| Version | Chapter | Change |
|---|---|---|
| 01.A | General | Manual for Data Connect created. |
2. Introduction
2.1 Overview
With Data Connect, you get access to customer journey management data from your chosen data visualisation tool. Data is exposed as an OData API for direct import and dashboard creation. Data is encrypted in transit and access is controlled through an administrative portal.
The API enables advanced analytics and incremental data pulls into your own systems for further processing. Many existing client libraries for most platforms reduce the development time required.
2.1.1 Supported Data Visualisation Tools
Any tool that supports OData source is compatible. Examples: PowerBI, Tableau, Excel, Qlikview.
2.1.2 Supported OS and Databases
See the Qmatic Orchestra datasheet for supported operating systems and databases.
2.2 Requirements
- Orchestra 7.3 original release or later.
- A signed SSL certificate is required to support tools like Power BI.
2.3 Licensing
The Data Connect OnPrem license is required.
2.4 Installation Components
- Data Connect API — The backend.
- Data Connect App — The user interface (landing page with links to data feeds).
Both components require manual installation procedures. See chapter 3.
3. Installation
3.1 Install Data Connect API
3.1.1 Extract ZIP File (Windows Only)
Extract Data_Connect_Api.zip to a suitable directory (e.g. C:/qmatic/data-connect).
3.1.2 Create User and Directory (Linux Only)
- Create the
qmaticuser and installation directory:sudo adduser qmatic sudo passwd qmatic sudo mkdir -p /opt/qmatic/data-connect
- Extract the zip and set permissions:
sudo chown -R qmatic:qmatic /opt/qmatic/data-connect
- Untar the Java distribution as the
qmaticuser:su qmatic -c "tar -xvf zulu17.42.19-ca-jre17.0.7-linux_x64.tar"
3.1.3 Update application.yml
Locate conf\application.yml and make the following mandatory changes:
Server ports:
server: http-port: 8088 https-port: 8448
SSL (enabled by default to support tools like Power BI):
server:
ssl:
enabled: true
key-store: ${APP_HOME}/conf/security/keystore.jks
key-store-password: changeit
key-store-type: jks
key-alias: orchestra
key-password: changeit
security:
require-ssl: true
To disable SSL, set require-ssl to false. See the Secure Communication section of the Orchestra Reference Manual for details.
StatDB (uncomment the correct database section — Postgres, Oracle, or MSSQL — and update credentials):
insapi:
db:
driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://localhost:1433;databaseName=statdb
username: stat
password: stat
Orchestra Endpoint:
# Same server:
environment:
orchestra:
hostName: 127.0.0.1
port: 8080
protocol: http
# Different server:
environment:
orchestra:
hostName: 10.20.0.1
port: 8443
protocol: https
3.1.4 Install and Start Windows Service
- Locate
bin\install-dataconnect.bat. - Run it with administrator privileges.
- Open Windows Services and verify the service Qmatic Data Connect API is installed.
- Start the service.
3.1.5 Install and Start Linux Service
- Grant execute permissions to the required files in the
bindirectory:sudo chmod u+x /opt/qmatic/data-connect/bin/install-data-connect.sh
- Run the install script with
sudo(requireschkconfigto be installed):sudo /opt/qmatic/data-connect/bin/install-data-connect.sh
- Start / restart / stop the service:
sudo /etc/init.d/data-connect start sudo /etc/init.d/data-connect restart sudo /etc/init.d/data-connect stop
Logs are in the logs folder of the data-connect installation directory.
3.2 Install Data Connect App
- Copy
data-connect.warto<Orchestra_install_dir>\system\custdeploy. - If running Orchestra 7.4 original release or earlier, add to
applicationMessages.properties:application.data-connect = Data Connect application.data-connect.description = Data Connect data feeds
- Download
data_connect_app_db.zipand execute the appropriate database scripts:- Orchestra 7.4 update 1 or later: use
db/updatesscripts. - Orchestra 7.4 original release or earlier: use
db/insertsscripts.
- Orchestra 7.4 update 1 or later: use
- In the
shiro.inifile (/confdirectory), add under the URL section:/data-connect/** = saml2SecurityFilter, qpAuthc, modules[data-connect]
When upgrading from Orchestra 7.4 Original Release, update any existingdata_connectrow to usedata-connect(with hyphen). - Set the
DATA_CONNECT_BASE_URLenvironment variable instandalone.bat(Windows) orstandalone.sh(Linux) in<orchestra-home>/app/wildfly<version>/bin, before the debug configuration row:# Windows: set DATA_CONNECT_BASE_URL=https://<host>:<port>/data-connect/v1 # Linux: export DATA_CONNECT_BASE_URL=https://<host>:<port>/data-connect/v1
- Restart Orchestra Central.
- Set up access rights in Orchestra > User Management (see section 3.3).
3.3 Access Rights
Users of Data Connect must be assigned a role with the following access modules:
- Data Connect
- Connector ServicePoint
4. Using the Data
4.1 Data Time Ranges
Two OData URLs are available with the same data structure but different date ranges. URLs are found on the Data Connect landing page.
- Short term data URL — Data from the last 60 days. Suitable for near real-time dashboards and short-term analysis.
Example:https://localhost:8080/onyxdev/v1/short-term-data - Long term data URL — Data from 3 years before the start of the current year to the current day. Suitable for long-term analysis and reporting.
Example:https://localhost:8080/onyxdev/v1/long-term-data
4.2 Import Data from Power BI Desktop
- Open Power BI Desktop and click Get data on the splash screen.
- Select Other > OData Feed and click Connect.
- Enter the API URL. If prompted for authentication, select Basic.
- Select the checkboxes for the tables to import and click Load.
- Your data is now imported and ready for dashboard creation.
4.3 Modeling
Once data is imported, a complete model is provided automatically — no manual modelling is required.
4.4 Quota
A quota of 5,000,000 entities per 24 hours applies (e.g. one visit, one branch, one service = one entity each). If exceeded, an HTTP 429 error is returned with a message indicating when the quota resets.
5. Exploring the Data
5.1 Overview
Data Connect uses the OData protocol (ISO/OASIS standard), following RESTful principles. It standardises schemas, metadata, and interactions — similar to a database protocol. Connect to the service, get the schema, and query from there.
- Encryption — Transport Level Security (TLS).
- Authentication — Basic Authentication (as required by the OData specification).
- Performance — Only pull changes since the last query, especially for large fact tables. Implement caching for slowly changing entities.
- Data format — OData supports both XML and JSON. Control via the
AcceptHTTP header. - Read only — Data in Data Connect is read-only. Write/modify operations return an error.
- Rate limiting — If exceeded, HTTP 429 is returned. Do not fetch faster than every 30 minutes. Use a random start time (e.g. 13:47 rather than 13:00) to reduce process conflicts.
5.2 Getting Started
- Read the OData Beginner Tutorial.
- Explore the service endpoint in a browser, Postman, or similar to get familiar with the protocol.
- Choose a client library for your platform. A library is recommended for maintainability, but direct interaction is also possible.
Exploration tools: Postman, curl, REST Client for VS Code, or any web browser.
5.3 Exploring OData — Example Requests
| Request | URL |
|---|---|
| Get all branches | GET https://mydomain.com/odata/Branches HTTP/1.1 |
| Get two branches | GET https://mydomain.com/odata/Branches?$top=2 HTTP/1.1 |
| Get a specific branch | GET https://mydomain.com/odata/Branches?$filter=Branch eq 'Lone Tree' HTTP/1.1 |
| Get visit transactions with waiting time, ordered by queue entry time | GET https://mydomain.com/odata/VisitTransactions?$orderby=EnteredQueueTimeKey asc&$top=10 HTTP/1.1 |
| Get services ordered by name | GET https://mydomain.com/odata/Services?$orderby=Service asc HTTP/1.1 |
| Get the 10 last visit transactions | GET https://mydomain.com/odata/VisitTransactions?$orderby=EnteredQueueTimeKey asc&$top=10 HTTP/1.1 |
5.4 OData Primitive Data Types
| Type | Meaning |
|---|---|
Edm.Binary | Binary data |
Edm.Boolean | Binary-valued logic |
Edm.Byte | Unsigned 8-bit integer |
Edm.Date | Date without a time-zone offset |
Edm.DateTimeOffset | Date and time with a time-zone offset, no leap seconds |
Edm.Decimal | Numeric values with decimal representation |
Edm.Double | IEEE 754 binary64 floating-point number (15–17 decimal digits) |
Edm.Duration | Signed duration in days, hours, minutes, and (sub)seconds |
Edm.Guid | 16-byte (128-bit) unique identifier |
Edm.Int16 | Signed 16-bit integer |
Edm.Int32 | Signed 32-bit integer |
Edm.Int64 | Signed 64-bit integer |
Edm.SByte | Signed 8-bit integer |
Edm.Single | IEEE 754 binary32 floating-point number (6–9 decimal digits) |
Edm.Stream | Binary data stream |
Edm.String | Sequence of characters |
Edm.TimeOfDay | Clock time 00:00–23:59:59.999999999999 |
6. API Reference
The API exposes the following entities. All are accessed through the QmaticBiContainer root entity.
6.1 Appointment
One entity per appointment created. Updated when an appointment is changed. Appointments served in a visit are inserted after the VisitTransaction table is updated.
| Field | Type | Description |
|---|---|---|
| AppointmentCustomers | AppointmentCustomer | Linked customer(s). |
| AppointmentDuration | Edm.Int64 | Planned appointment duration in minutes. |
| AppointmentService | AppointmentService | Service for the appointment. |
| AppointmentStatusKey | Edm.Int32 | Status key. Note: never updated from CREATED if the visit is never put in an appointment queue. |
| ArrivalStatus | AppointmentArrivalStatus | Arrival status. |
| ArrivalStatusKey | Edm.Int32 | Reference to dim_arrival_status. |
| Branch | Branch | Branch. |
| BranchKey | Edm.Int64 | Reference to dim_branch. NULL = Branch Group. |
| CancelledDate | AppointmentCancelledDate | Cancellation date. |
| CancelledDateKey | Edm.Int32 | Date the appointment was cancelled. |
| ClientKey | Edm.Int64 | Reference to dim_client (license). |
| CountServices | Edm.Int32 | Number of services delivered. |
| CreatedAt | Edm.DateTimeOffset | Year, quarter, month, date of creation. |
| CreatedDate | AppointmentCreatedDate | Creation date dimension. |
| CreatedDateKey | Edm.Int32 | Date appointment was booked. |
| CreatedTime | AppointmentCreatedTime | Creation time dimension. |
| CreatedTimeKey | Edm.Int32 | Timestamp of creation. |
| Date | Date | Date dimension. |
| DateKey | Edm.Int32 | Date for the appointment. |
| DaysCancelledBefore | Edm.Int32 | Days before appointment start time that it was cancelled. |
| DaysToAppointment | Edm.Int64 | Days between booking date and appointment start time. |
| EndTime | AppointmentEndTime | End time dimension. |
| EndTimeKey | Edm.Int32 | End time for the appointment. |
| Id | Edm.Int32 | Appointment identifier. |
| Lateness | Edm.Int64 | Time from appointment start until customer was called. |
| OriginId | Edm.Int64 | Unique stable ID for tracking changes; never changes. |
| Resource | Resource | Assigned resource. |
| ResourceKey | Edm.Int64 | ID of the assigned resource. |
| ServiceKey | Edm.Int64 | Backwards compatibility: ID of first service in multi-service appointment. |
| StartTime | AppointmentStartTime | Start time dimension. |
| StartTimeKey | Edm.Int32 | Appointment start time. |
| Status | AppointmentStatus | Status dimension. |
| Tardiness | Edm.Int64 | Time from customer arrival until appointment start. Always positive. Deprecated — use Lateness instead. |
| TransactionTime | Edm.Int64 | Sum of all transaction times within the appointment. |
| UpdatedCount | Edm.Int32 | Number of times the appointment has been changed. |
| WaitingTime | Edm.Int64 | Waiting time (same as the visit transaction waiting time). |
| WalkingTime | Edm.Int64 | Walking time for the first transaction. |
| WrapupTime | Edm.Int64 | Total wrap-up time for all transactions within the appointment. |
6.2 AppointmentArrivalStatus
Arrival status values for appointments.
| Id | Name | Description |
|---|---|---|
| 1 | NOT_ARRIVED | Customer has not yet arrived (no visit created). Updated when the transaction is ready. |
| 2 | ARRIVE_BEFORE_CALL_BEFORE | Customer arrived before and was called before the appointment time. |
| 3 | ARRIVE_BEFORE_CALL_AFTER | Customer arrived before but was called after the appointment time. |
| 4 | ARRIVE_BEFORE_NOT_CALLED | Not used. |
| 5 | ARRIVE_LATE | Customer arrived after the appointment time. |
Fields: Appointments (Appointment), ArrivalStatus (Edm.String — name), Id (Edm.Int32).
6.3 AppointmentCancelledDate & 6.4 AppointmentCreatedDate
Date dimension entities for appointment cancellation and creation dates. Both share the same field structure:
| Field | Type | Description |
|---|---|---|
| DayOfMonth | Edm.Int32 | Day of the month (e.g. 13 for 2014-01-13). |
| DayOfWeek | Edm.Int32 | Day of week, Sunday=1. |
| DayOfWeekName | Edm.String | Localised day name (e.g. day.Monday). |
| DayOfWeekNameEn | Edm.String | English day name (e.g. Tuesday). |
| FullDate | Edm.Date | Full date (Year, Quarter, Month, Day). |
| Id | Edm.Int32 | Identifier. |
| Month | Edm.Int32 | Month number 1–12. |
| MonthName | Edm.String | Localised month name (e.g. month.march). |
| MonthNameEn | Edm.String | English month name (e.g. January). |
| Quarter | Edm.Int32 | Quarter 1–4. |
| WeekNumber | Edm.Int32 | Week number (January 1 = week 1, Sunday = first day). Range: 1–54. |
| WeekNumberIso | Edm.Int32 | ISO 8601 week number (first Thursday = week 1, Monday = first day). Range: 1–53. |
| Year | Edm.Int32 | Year (e.g. 2014). |
6.5 AppointmentCreatedTime, 6.7 AppointmentEndTime, 6.9 AppointmentStartTime
Time dimension entities for appointment creation, end, and start times. All share the same field structure:
| Field | Type | Description/Example |
|---|---|---|
| AmPm | Edm.String | AM or PM. |
| Hour | Edm.Int32 | 12h format (e.g. 13:37 → 1). |
| Hour24 | Edm.Int32 | 24h format (e.g. 13:37 → 13). |
| Id | Edm.Int32 | Time identifier. |
| Interval5Min / Interval5Min24 | Edm.String | 5-minute interval (e.g. 13:37 → 01:35 / 13:35). |
| Interval10Min / Interval10Min24 | Edm.String | 10-minute interval (e.g. 13:37 → 01:30 / 13:30). |
| Interval15Min / Interval15Min24 | Edm.String | 15-minute interval. |
| Interval30Min / Interval30Min24 | Edm.String | 30-minute interval. |
| Minute | Edm.Int32 | Minutes (e.g. 13:37 → 37). |
| Time | Edm.DateTimeOffset | Full time (e.g. 1900-01-01 13:37:00.000). |
6.6 AppointmentCustomer
| Field | Type | Description |
|---|---|---|
| Appointment | Appointment | Linked appointment. |
| AppointmentId | Edm.Int64 | Identifies the appointment. |
| Booked | Edm.Boolean | True if the customer was added before the appointment became a visit. |
| CustomerId | Edm.Int64 | Unique customer ID (no customer data stored in stat table). |
| Id | Edm.Int64 | Table identifier. |
| Served | Edm.Boolean | True if the customer was present when the service was delivered. |
6.8 AppointmentService
| Field | Type | Description |
|---|---|---|
| Appointment | Appointment | Linked appointment. |
| AppointmentId | Edm.Int64 | Appointment ID. |
| Id | Edm.Int64 | Table identifier. |
| Served | Edm.Boolean | Indicates if the service was delivered. |
| Service | Service | Service dimension. |
| ServiceKey | Edm.Int64 | Reference to dim_service. |
6.10 AppointmentStatus
Fields: Appointments (Appointment), Id (Edm.Int32), Status (Edm.String).
6.11 Branch
Branch information, updated when a branch is saved or updated on the central server.
| Field | Type | Description |
|---|---|---|
| Branch | Edm.String | Branch name. |
| City | Edm.String | City. |
| Country | Edm.String | Country. |
| DeliveredServices | DeliveredService | Related delivered services. |
| FactAppointments | Appointment | Related appointments. |
| FactStaffSessions | StaffSession | Related staff sessions. |
| FactVisitTransactions | VisitTransaction | Related visit transactions. |
| FeedbackResults | FeedbackResult | Related feedback results. |
| Id | Edm.Int32 | Branch identifier. |
| Latitude | Edm.Double | Latitude. |
| Longitude | Edm.Double | Longitude. |
| TimeZone | Edm.String | Time zone. |
6.12 CallTime, 6.16 EndTime, 6.17 EnteredQueueTime
Time dimension entities for when a customer was called, when the transaction ended, and when a customer entered the queue. All use the same time field structure as AppointmentCreatedTime (section 6.5). Each also has a FactVisitTransactions (VisitTransaction) navigation property.
6.13 Date
General date dimension used by appointments, visit transactions, delivered services, and staff sessions. Fields are the same as AppointmentCancelledDate (section 6.3), plus navigation properties: Appointments, DeliveredServices, FactVisitTransactions, StaffSessions.
6.14 DeliveredService
Information about delivered services added to visits.
| Field | Type | Description |
|---|---|---|
| Branch / BranchKey | Branch / Edm.Int64 | Branch (NULL = Branch Group). |
| CreatedAt | Edm.DateTimeOffset | Creation date/time. |
| Date / DateKey | Date / Edm.Int32 | Date delivered. |
| DeliveredServiceKey | Edm.Int64 | Reference to delivered service dimension. |
| Id | Edm.Int32 | Identifier. |
| Outcome / OutcomeKey | Outcome / Edm.Int64 | Outcome. |
| Queue / QueueKey | Queue / Edm.Int64 | Queue. |
| QueueType / QueueKeyType | QueueType / Edm.Int32 | Queue type. |
| Service / ServiceKey | Service / Edm.Int64 | Service. |
| ServicePoint / ServicePointKey | ServicePoint / Edm.Int64 | Service point. |
| Staff / StaffKey | Staff / Edm.Int32 | Staff member. |
| Time / TimeKey | DeliveredServiceTime / Edm.Int32 | Time delivered. |
| TimeSeconds | Edm.Int32 | Seconds part of the timestamp. |
| TransactionTime | Edm.Int64 | Time from customer called until delivered service was added, or between two delivered services. |
| Visit / VisitKey | Visit / Edm.Int64 | Visit. |
| WaitingTime | Edm.Int64 | Same as for the transaction (FactVisitTransaction). |
6.15 DeliveredServiceTime
Time dimension for when a service was delivered. Same time field structure as AppointmentCreatedTime (section 6.5), with DeliveredServices navigation property.
6.18 EntryPoint
Entry point information. A new entry is generated each time a new or updated entry point is encountered in an inserted visit.
Fields: EntryPoint (Edm.String — name), FactVisitTransactions (VisitTransaction), Id (Edm.Int32).
6.19 FeedbackAnswer
Fields: FeedbackResults (FeedbackResult), Id (Edm.Int32), NumericAnswer (Edm.Int32), TextAnswer (Edm.String — NULL for numeric; also used for numeric answers not suitable as dimensions, e.g. NPS).
6.20 FeedbackDate
Date dimension for feedback submission. Same date field structure as AppointmentCancelledDate (section 6.3), with FeedbackResults navigation property.
6.21 FeedbackQuestion
Fields: FeedbackResults (FeedbackResult), Id (Edm.Int64), Question (Edm.String), StartDate (Edm.Date — date created).
6.22 FeedbackResult
| Field | Type | Description |
|---|---|---|
| Answer / AnswerKey | FeedbackAnswer / Edm.Int32 | Answer. |
| Branch / BranchKey | Branch / Edm.Int32 | Branch. |
| Date / DateKey | FeedbackDate / Edm.Int32 | Feedback date. |
| EventTimestamp | Edm.DateTimeOffset | When the feedback result was created. |
| Id | Edm.Int64 | Identifier. |
| Question / QuestionKey | FeedbackQuestion / Edm.Int32 | Question. |
| QuestionType / QuestionKeyType | QuestionType / Edm.Int32 | Question type. |
| TextAnswer | Edm.String | Free text answer or NPS-type numeric; NULL for standard numeric answers. |
| Time / TimeKey | FeedbackTime / Edm.Int32 | Feedback time. |
| TimeSeconds | Edm.Int32 | Second added to visit. |
| Visit / VisitKey | Visit / Edm.Int64 | Visit. |
6.23 FeedbackTime
Time dimension for feedback submission. Same time field structure as AppointmentCreatedTime (section 6.5), with FeedbackResults navigation property.
6.24 Outcome
Outcome information from Business Configuration. A new entry is generated when a new or updated outcome is encountered in an inserted visit.
Fields: BranchOriginId (Edm.Int64), ClientKey (Edm.Int64), DeliveredServices, EndDate (Edm.DateTimeOffset — NULL = active), FactVisitTransactions, Id (Edm.Int32), OriginId (Edm.Int32 — stable, never changes), Outcome (Edm.String — name), StartDate (Edm.DateTimeOffset).
6.25 QmaticBiContainer
The root entity providing access to all collections. Navigate all entities through this container:
AppointmentArrivalStatuses, AppointmentCancelledDates, AppointmentCreatedDates, AppointmentCreatedTimes, AppointmentCustomers, AppointmentEndTimes, AppointmentServices, AppointmentStartTimes, AppointmentStatuses, Appointments, Branches, CallTimes, Dates, DeliveredServiceTimes, DeliveredServices, EndTimes, EnteredQueueTimes, EntryPoints, FeedbackAnswers, FeedbackDates, FeedbackQuestions, FeedbackResults, FeedbackTimes, Outcomes, QuestionTypes, QueueTypes, Queues, Resources, ServicePoints, Services, StaffSessionEndTimes, StaffSessionOutcomes, StaffSessionStartTimes, StaffSessions, Staffs, VisitCallTypes, VisitCustomers, VisitTransactionOutcomes, VisitTransactions, Visits, WorkProfiles.
6.26 QuestionType
Type of feedback question. Fields: FeedbackResults, Id (Edm.Int32), QuestionType (Edm.String — name).
6.27 Queue
Queue information from Business Configuration. A new entry is generated when a new or updated queue is encountered for a specific branch in an inserted visit.
Fields: DeliveredServices, FactVisitTransactions, Id (Edm.Int32), Queue (Edm.String — name).
6.28 QueueType
| Id | Name |
|---|---|
| 1 | QUEUE |
| 2 | STAFF_QUEUE |
| 3 | SERVICE_POINT |
| 4 | STAFF_POOL |
| 5 | APPOINTMENT_QUEUE |
Fields: FactVisitTransactions, Id (Edm.Int32), QueueType (Edm.String — name).
6.29 Resource
Resource information from Calendar Admin. A new entry is generated when a new or updated resource is encountered in an inserted appointment. When a resource is updated, an end date is set on the previous version.
Fields: Appointments, BranchOriginId (Edm.Int64), Id (Edm.Int32), Name (Edm.String), OriginId (Edm.Int32 — stable).
6.30 Service
Service information from Business Configuration. A new entry is generated when a new or updated service is encountered in an inserted visit or appointment.
Fields: AppointmentService, DeliveredServices, FactVisitTransactions, Id (Edm.Int32), Service (Edm.String — name).
6.31 ServicePoint
A new entry is generated when a new or updated service point is encountered for a branch in an inserted visit.
Fields: DeliveredServices, FactVisitTransactions, Id (Edm.Int32), ServicePoint (Edm.String — name).
6.32 Staff
Staff (user) information from User Management. A new entry is generated when a new or updated staff member is encountered. May contain an anonymous member for events missing a logged-in user (e.g. branch reset).
Fields: DeliveredServices, FactStaffSessions, FactVisitTransactions, FirstName (Edm.String), Id (Edm.Int32), LastName (Edm.String), Staff (Edm.String — full name).
6.33 StaffSession
User login sessions.
| Field | Type | Description |
|---|---|---|
| Branch / BranchKey | Branch / Edm.Int64 | Branch (NULL = Branch Group). |
| CreatedAt | Edm.DateTimeOffset | Session creation date/time. |
| Date / DateKey | Date / Edm.Int32 | Session date. |
| EndTime / EndTimeKey | StaffSessionEndTime / Edm.Int32 | Session end time. |
| EndTimestamp | Edm.DateTimeOffset | Session end timestamp. |
| Id | Edm.Int32 | Identifier. |
| IdleTime | Edm.Int64 | Session time not spent on any customer. |
| ServedCount | Edm.Int32 | Customers served during the session. |
| ServingTime | Edm.Int64 | Session time that was transaction time. |
| SessionOutcomeKey | Edm.Int32 | Reference to Staff Session Outcome dimension. |
| Staff / StaffKey | Staff / Edm.Int64 | Staff member. |
| StaffSessionOutcome | StaffSessionOutcome | Session outcome. |
| StartTime / StartTimestamp | StaffSessionStartTime / Edm.DateTimeOffset | Session start time. |
| StoreNextTime | Edm.Int32 | Time (seconds) in store next during the session. |
| TimeKey / TimeSeconds | Edm.Int32 / Edm.Int32 | Time dimension reference / seconds in store next. |
| TotalTime | Edm.Int64 | Total session time. |
| VisitsServed | Edm.Int64 | Total transactions (including no-shows). |
| WrapupTime | Edm.Int64 | Total wrap-up time for all transactions in the session. |
6.34 StaffSessionEndTime & 6.36 StaffSessionStartTime
Time dimension entities for staff session start and end times. Same time field structure as AppointmentCreatedTime (section 6.5), with FactStaffSessions navigation property.
6.35 StaffSessionOutcome
| Id | Name | Description |
|---|---|---|
| 1 | HIJACKED | User logged out because another user logged in to the service point. |
| 2 | LOGOUT | User logged out from the service point. |
| 3 | LOGOUT_FORCE | Forced logout; user could not complete the transaction. |
| 4 | LOGOUT_BY_OTHER_USER | Another user performed a forced logout because the original user was unavailable. |
| 5 | SESSION_TIMEOUT | Session ended by user session timeout. |
| 6 | PUBLISH | Session ended due to a publish. |
| 7 | BRANCH_DELETED | Session ended because the branch was deleted. |
| 8 | USER_DELETED | Session ended because the user was deleted. |
| 9 | RESET | Session ended due to a reset. |
Fields: FactStaffSessions, Id (Edm.Int64), Name (Edm.String).
6.37 Visit
| Field | Type | Description |
|---|---|---|
| AppointmentId | Edm.Int64 | If set, indicates the visit originated as an appointment. References the Appointment table. |
| CreatedTimestamp | Edm.Int64 | Timestamp of visit creation. |
| Custom1 | Edm.String | Custom information (notes). |
| Custom2–5 | Edm.String | Custom information fields. |
| DeliveredServices | DeliveredService | Related delivered services. |
| FactVisitTransactions | VisitTransaction | Related visit transactions. |
| FeedbackResults | FeedbackResult | Related feedback. |
| Id | Edm.Int32 | Visit identifier. |
| TicketId | Edm.String | Ticket number. |
| VipLevel | Edm.String | Customer VIP level. |
| VisitCustomers | VisitCustomer | Related customers. |
| VisitType | Edm.String | Visit type name. |
6.38 VisitCallType
| Id | Name | Description |
|---|---|---|
| 1 | CHERRY_PICK | Specific ticket number called directly from the queue. |
| 2 | WALK_DIRECT | Customer walked directly to the service point without a ticket. |
| 3 | WORK_PROFILE | Customer called according to the work profile. |
Fields: FactVisitTransactions, Id (Edm.Int64), VisitCallType (Edm.String — name).
6.39 VisitCustomer
Fields: CustomerId (Edm.Int64 — unique customer ID, no customer data stored in stat table), Id (Edm.Int64), Visit (Visit), VisitKey (Edm.Int64).
6.40 VisitTransaction
The core fact table. One row per visit transaction event.
| Field | Type | Description |
|---|---|---|
| Branch / BranchKey | Branch / Edm.Int64 | Branch (NULL = Branch Group). |
| CallTime / CallTimeKey | CallTime / Edm.Int32 | Time customer was called. |
| CallTimeOfDay | Edm.Int64 | Time of call. |
| CallTimestamp | Edm.DateTimeOffset | Timestamp of call. |
| Date / DateKey | Date / Edm.Int32 | Transaction date. |
| EndTime / EndTimeKey | EndTime / Edm.Int32 | Transaction end time. |
| EndTimeOfDay | Edm.Int64 | Transaction end time of day. |
| EnterQueueTimeOfDay | Edm.Int64 | Time customer entered the queue. |
| EnteredQueueTime / EnteredQueueTimeKey | EnteredQueueTime / Edm.Int32 | Queue entry time dimension. |
| EnteredQueueTimestamp | Edm.DateTimeOffset | Timestamp of queue entry. |
| EntryPoint / EntryPointKey | EntryPoint / Edm.Int64 | Entry point. |
| Id | Edm.Int32 | Identifier. |
| IsAppointment | Edm.Boolean | Whether the visit is an appointment. |
| Outcome / OutcomeKey | Outcome / Edm.Int64 | Outcome. |
| Queue / QueueKey | Queue / Edm.Int64 | Queue. |
| QueueType / QueueKeyType | QueueType / Edm.Int64 | Queue type. |
| RecycleCount | Edm.Int32 | Number of times recycled (recycle does not create a new transaction). |
| Service / ServiceKey | Service / Edm.Int64 | Service (ServiceKey = first service for backwards compatibility). |
| ServicePoint / ServicePointKey | ServicePoint / Edm.Int64 | Service point. |
| ServiceTransactionTimeLevel | Edm.Int64 | Transaction time service level (seconds) from Business Configuration. |
| Staff / StaffKey | Staff / Edm.Int64 | Staff member. |
| StaffTransactionTime | Edm.Int64 | Total staff transaction time: store next + walk + face-to-face + wrap-up. |
| TimeSeconds | Edm.Int32 | Seconds part of the timestamp. |
| TransactionTime | Edm.Int64 | Time from call shown on display until transaction ends (next call, visit end, transfer, or counter close). Recall time is not included; last VISIT_CALL is used when recall has been used. |
| TransactionTimeVsServiceLevel | Edm.String | Whether transaction time is Above or Below service level. |
| VerticalMessageKey | Edm.Int64 | Reference to vertical message dimension (from Surface Editor / Context Marketing). |
| Visit / VisitKey | Visit / Edm.Int64 | Visit (VisitKey is unique per ticket number). |
| VisitCallType / VisitCallKeyType | VisitCallType / Edm.Int64 | How the customer was called; NULL for non-call events. |
| VisitOutcome / VisitOutcomeKey | VisitTransactionOutcome / Edm.Int64 | Transaction outcome; NULL for non-ending events. |
| WaitingTime | Edm.Int64 | Single service: time from queue entry to call displayed. Multi-service: NULL for subsequent transactions (customer was not in a queue). |
| WaitingTimeServiceLevel | Edm.Int64 | Waiting time service level (seconds) from Queue configuration. 0 for service point pool or staff pool calls. |
| WaitingTimeVsServiceLevel | Edm.String | Whether waiting time is Above or Below service level. |
| WalkingTime | Edm.Int64 | Time from call displayed to customer arriving at the counter. |
| WorkProfile / WorkProfileKey | WorkProfile / Edm.Int64 | Work profile (value for SET_WORK_PROFILE and ADD_USER_TO_STORE_NEXT events; otherwise NULL). |
| WrapupTime | Edm.Int64 | Time from wrap-up start to transaction end. |
6.41 VisitTransactionOutcome
| Id | Name | Description |
|---|---|---|
| 1 | NORMAL | Transaction ended when next customer was called, or as the end of the visit. |
| 2 | NO_SHOW | Customer never responded and was never served. |
| 3 | REMOVE | Staff member manually removed the visit from the queue. |
| 4 | RECYCLE | Ticket placed back in the same queue. |
| 5 | TRANSFER_TO_QUEUE | Visit transferred to another queue; new transaction started. |
| 6 | TRANSFER_TO_SERVICE_POINT | Visit transferred to a service point pool; new transaction started. |
| 7 | TRANSFER_TO_STAFF | Visit transferred to a staff pool; new transaction started. |
| 8 | REMOVE_BY_RESET | Visit removed by a branch reset. |
| 9 | REMOVE_BY_CUSTOMER | Customer removed the ticket (e.g. via Mobile Ticket). |
| 10 | END_BY_FORCE_LOGOUT | Staff member was force-logged out while a transaction was ongoing. |
| 11 | REMOVE_BY_PUBLISH | A publish removed the visit. |
| 12 | ENDED_BY_LOGOUT | Staff member logged out and ended the visit. |
| 13 | ENDED_BY_SHIRO_TIMEOUT | Session and visit ended due to a Shiro timeout. |
Fields: FactVisitTransactions, Id (Edm.Int32), VisitTransactionOutcome (Edm.String — name).
6.42 WorkProfile
Fields: BranchOriginId (Edm.Int64 — stable branch ID), ClientKey (Edm.Int64), EndDate (Edm.DateTimeOffset — NULL = active), FactVisitTransactions, Id (Edm.Int32), OriginId (Edm.Int32 — auto-assigned), StartDate (Edm.DateTimeOffset), WorkProfile (Edm.String — name).
Q-MATIC AB, Box 198, SE-431 23 Mölndal, Sweden. Phone: +46 31 756 46 00. Email: info@qmatic.com. Web: www.qmatic.com