Getting Started with DeskDirector
DeskDirector Portals
Browser Support
What is the DeskDirector Admin Portal?
What is the DeskDirector Tech Portal
What is the DeskDirector Client Portal?
Desktop Portal
Managing Your Account
Admin Essentials
DeskDirector Features Overview
Logging in to DeskDirector
User Profiles & Profile Pictures
Managing Tickets with DeskDirector
Office Hours
Getting Started with the Solution Library
How Searching Works
Embedding Help Page Media
Get started with the DeskDirector Power Automate Connector
Features
Portal Customization
Forms
Service Catalogue
Communication
Email Connectors
Notifications
Email Notifications
Actionable Messages for Emails
Real-Time Chats
Email Template Engine
Surveys
Broadcasts
Generative AI
DeskDirector with Generative AI
Ticket Summary for TECH Portal
Setting up AI Service Providers
Microsoft Foundry for DeskDirector
Knowledge Bases for AI Assistants
Custom Tools for AI Assistants
AI Assistants in DeskDirector
Advanced
Login & Authentication
Contact Groups
Custom Domains
File Storage
Dashboard
Accounts
Contacts
Approvals
Tags
Task Lists
The Learning Center
Portal Deep Linking
Auditing & Analytics
Microsoft Power Automate
Actions
Solutions
Featured Solution: Teams Ticket Discussion
Power Automate Template Gallery
Featured Solution: Ticket Briefing
Power Automate Administration
DeskDirector Power Platform Connector Reference
Power Automate Connector - Setting up your first flow
Microsoft Teams App
Introducing the DeskDirector for Microsoft Team App
Installing the Microsoft Teams App (Client Mode)
Installing the Microsoft Teams App (TECH Mode)
Setting up Tags for Teams Discussions (TECH Portal)
Branding the DeskDirector Teams App
DeskDirector Teams App Notifications
Contact Groups Integration with Microsoft Teams
Setting up Content Security Policy (CSP)
Advanced topic: Setting up Tech & Client Mode in the same tenancy
Integrating Microsoft Teams with DeskDirector Tech Portal
Smart Alerts for TECH Users
Integrations
Developer Resources
Getting Started
What is the Toki Iti API
API Versions & Routes
Roles & Scopes
Authorization Options
Querying the API
How to Change an Entity Through the API
API Key Authorization
OAuth Fundamentals
Understanding OAuth for Tokity Integrations: Key Concepts
OAuth Authorization Code Flow: How an App Gets Access to Tokity
OAuth App Registration
How to Register an OAuth App to Integrate with Tokity
Choosing an OAuth App Type: Confidential vs. Public Apps and Client Secrets
OAuth Personal Secrets: What They Are and When to Use Them
OAuth Administration
Configuring OAuth Settings in Tokity
Managing OAuth Authorized Sessions and User Consent
Granting OAuth Admin Consent at the Root Level
API Response Control
Uploading Attachments (Ticket API)
The Prefer Header — Overview
Controlling Returned Data (Ticket API)
Controlling Returned Data (Form Result API)
Controlling Returned Data (Workspace API)
Workspace Ordering
How Workspace Ordering Works
Creating and Reordering Workspace Groups
Adding and Reordering Tickets in a Workspace Group
Data Sync & Notifications
Delta API: Tracking Changes Over Time
Webhooks vs. Events — Differences, When to Use Which
Verifying Webhook and Event Payloads (HMAC Signature)
Ticket Widgets
Ticket Widget: Overview
How the Widget Is Requested
Ticket Widget Anatomy and Styling
Ticket Widget Actions: Leading, Secondary and Primary
Ticket Widget: Progress Type
Ticket Widget: List Type
Ticket Widget: Description Type
Ticket Widget: Form Type
Ticket Widget: Control When a Widget Refreshes
Ticket Widget: Form Results and State Across Steps
Ticket Widget: Error Responses and Debugging
Ticket Widget: Building a Multi-Step Request
Glossary
Security
Troubleshooting
Troubleshooting via Web Developer Tools
Permissions & Access - Common Issues
Contact DeskDirector Support
Troubleshooting DeskDirector Connection Issues
Desktop Portal - Common Issues
Contact Impersonation
Approvals - Common Issues
Microsoft Teams App - Common Issues
Email & Email Delivery - Common Issues
Login & Authentication - Common Issues
DeskDirector Desktop App - Installation Issues
- All Categories
- Developer Resources
- Workspace Ordering
- How Workspace Ordering Works
How Workspace Ordering Works
Updated
by Helpdocs Admin
Groups and tickets within a workspace are both ordered — groups have a position relative to other groups in the workspace, and tickets have a position relative to other tickets within their group. This article explains the model behind that ordering, and why the API is built around anchors rather than simple index numbers.
Why not just use an index or order number?
A common approach to ordering is to give each item a numeric position (1, 2, 3, ...) or an index in an array. The problem shows up as soon as you need to insert or move something between two existing items: there's no number available between 1 and 2, so you'd need to renumber every item that comes after the insertion point just to make room.
That's fine for small lists, but it becomes a real cost at scale — a single reorder can turn into an update that touches many other groups or tickets just to keep everyone's position number consistent, even though only one item conceptually moved. This gets worse under concurrent usage: two people reordering different items at the same time might both need to renumber overlapping ranges, creating a real risk of conflicting or lost updates.
Anchor-based positioning
Instead of asking you for a fixed position number, the API asks you for a relative position: where you want the item to end up, relative to its neighbors. You express this using:
operator— the type of move:move-top,move-bottom, ormove-between.anchorBeforeEntityId/anchorAfterEntityId— formove-between, the ID(s) of the neighboring item(s) you want to land next to.
When you specify an anchor, the server locates it and works out a new position value that fits appropriately in that spot — without needing to touch or renumber any other item in the group or workspace. Under the hood, this is done using a technique commonly known as fractional indexing, where position values can always have new values inserted between them without reshuffling existing ones. You don't need to understand the technique itself to use the API — it's mentioned here only so the general shape of the behavior makes sense.
This calculation is scoped to whichever level you're reordering:
- Groups are positioned relative to other groups in the same workspace.
- Tickets are positioned relative to other tickets in the same group — not across the whole workspace.
Anchor resolution and fallback
Anchors are resolved by ID at the time of the request. If an anchor can't be found — for example, it was deleted, or moved somewhere else in the meantime — the operation doesn't fail outright. Instead, it falls back to placing the item at the bottom, so the request still completes successfully rather than erroring out over a stale reference.
Concurrency
This model is specifically built to hold up under concurrent use — for example, multiple people or automations reordering groups or tickets in the same workspace at the same time. Because a move only ever affects the item being moved (not the position of every other item), concurrent moves don't conflict with or overwrite each other's changes.
In practice, a move request will only fail if one of the following is true:
- The ticket, group, or workspace being referenced doesn't exist.
- The caller doesn't have permission to modify the workspace.
Otherwise, the operation is designed to always succeed — even if the exact anchor you asked for is no longer available, thanks to the bottom-fallback behavior described above.