Collaboration in Next Experience (Sidebar) - Part 1

Table of Contents

Collaboration in the Next Experience

This is the first article of a short run regarding the Next Experience collaboration tool, Sidebar, and my experience with investigating, implementing, and extending the application and related feature sets.

I found myself investigating the inner workings of Sidebar as both my organisation, and a few organisations contacts work with, look to migrate into the Next Experience. I wanted to learn how this solution ticked, so that I could prepare for feedback and also understand where it could be extended or enhanced.

In this article I’ll discuss a little on previous collaboration tools ServiceNow has offered, as well as a little on the underlying architecture of Sidebar and what I’ve learnt thus far.

A brief history of collaboration in the ServiceNow platform

The Now platform has been supporting conversation and collaboration within the platform for over a decade - with rapid improvements and technology used over time, both within and without the platform, there have been several solutions to address the need for both requester to agent (RtA) and agent to agent (AtA) collaboration.

The eponymous Chat, in it's UI11 glory

The earliest iteration of this (to my knowledge) was simply named Chat (AtA), and was accompanied by Help Desk Chat (RtA). While I was not involved in the platform earlier enough to know its inception, the earliest records I can find of this application date back to 2011 and the Aspen release. This platform, now termed Legacy Chat, was deprecated in Istanbul. I only interacted with this iteration with one customer, and while I could definitely see the merits in this application, ServiceNow thankfully introduce a replacement in the Connect platform.

Connect Chat, the next frontier

The Connect platform supported two core use cases - Connect Chat (AtA), and Connect Support (RtA). Connect was built on top of the existing table structures used by Legacy Chat, and leveraged AngularJS quite heavily in its implementation. It was natively supported in UI16, and also offered capabilities through a ‘workspace’ of its own (not to be confused with ‘Workspace Experiences’). I encountered this application a lot when consulting, to varying levels of adoption - native collaboration in the Core platform was quite nifty, and support for Connect Support through Service Portal made for effective and efficient use of this platform as a chat platform for support. While there were some teething issues organisations would have, it was definitely a crowd favourite.

During Connect’s time in the sun, the Agent Chat and Virtual Agent interfaces were implemented and started to gain traction. These platforms were the vanguard of the new Conversation Server and Conversational Interfaces framework within ServiceNow, and while Virtual Agent was implemented with support for Connect Support, Planned Deprecation was officially announced in early 2022 for the application. The March 2023 deprecation notification aligned with the San Diego release and launch of the Next Experience, a next generation user interface which brought a swathe of improvements, but did not support Connect Chat. This left Connect Chat as an isolated application which could still be leveraged, but only by users in UI16. It wasn’t until Tokyo where ServiceNow announced a platform that would replace some of Connect Support’s features and bring some of its own - Sidebar!

Sidebar, from the header

Sidebar, all along the watchtower (screen base)

Bite-sized Sidebar (tl;dr)

Sidebar has been built natively into the Next Experience UX framework, and is presented as a collaboration platform from both the Core UI and several workspaces (see documentation for more detail). It is only compatible with the Next Experience, and it can be added to other workspaces and (at least in Utah) is present as a component for inclusion in UI Builder. Sidebar is the latest addition to the Conversational Interfaces suite, and leverages the same underlying UX features and some shared utilities to both normalize as well as standardize this tool for fulfiller usage. An example of this is Quick Actions in chat, which will be fun to experiment with.

Unlike Connect Chat, which generated conversations without a ‘source’ record, Sidebar is bound to the usage of a related record. The conversations can be generated by using the Discuss UX Action added to all [task]-extended tables, as well as to [interaction]. This will either associate a user to an existing conversation, or allow them to generate a new one. In a Conversational Interfaces (was Virtual Agent) Academy session, there was discussion of the ability to generate more than one discussion for a given record, but this was under safe harbour.

Sidebar as a chat interface brings a lot of the good takeaways from Connect, and fits well in the user experience of Next Experience at large. I am yet to test it on lower resolution screens but in most circumstances, the conversation windows are large enough without being invasive. I’m looking forward to experimenting more with this interface and understanding its features and accessibility support. The Utah release has brought Microsoft Teams integration to this tool, so I’m interested to get a chance to play with this some more.

Settings, Properties and Naming Information

This new feature, while marketed as Sidebar, is named Collaboration Chat or Collab Chat within platform. Simple configuration is able to be performed from Conversational Interface settings (/now/conversation/settings/general), and there are some additional controls available in System Properties. Of use for configuring this application are:

  • com.glide.cs.collab.enabled - a boolean property which enables or disables the solution. Defaulted to true on install
  • com.glide.cs.collab.enable_link_unfurling - a boolean property which enables or disables the unfurling behaviour for Sidebar conversations. Defaulted to true on install
  • glide.collab.check_candidate_permission - a boolean property governing whether the ‘candidate list’ (possible members to add to chat) validates permission to the related record for collaboration. Defaulted to true on install
  • glide.collab.candidate_prefill_limit - a String property setting the numerical upper limit of members to pre-fill in the creation modal for a Sidebar chat. Defaulted to 100
  • glide.collab.candidate_search_limit - a String property setting the numerical upper limit of members to search for in the creation modal for a Sidebar chat. Defaulted to 20

There is a few other properties available from my review, but these seem primarily around performance and should be ok with defaults to begin with.

Tables and my findings

The application comes with a few tables (captured as at Utah):

Table Label Table Name Usage & Notes
Collaboration Chat sys_cs_collab_chat Usage: This table stores our primary Collaboration record, including a reference to the most recent message in a chat.

Notes: Collaboration Chats have a state attribute, with values ‘Open’ and ‘Closed’. I haven’t yet seen much to control this state, but will be investigating further.
Collaboration Chat Member sys_cs_collab_member Usage: This table stores references for User profiles (sys_cs_channel_user_profile) and Collaboration Chats.

Notes: This acts as a many-to-many reference table. It holds additional information such as the status of the Sidebar chat frame, its order, and whether it has been dismissed or favourited.
Collaboration Chat Message sys_cs_collab_message Usage: This table stores chat messages, including JSON payloads for chat messages interpreted by the platform for Card and informational display. This holds the content associated with a Collaboration Chat, and provides the ordering and user reference information for it.
Collaboration Chat Message Post sys_cs_collab_message_post Usage: This table stores references to a Collaboration Chat, a Collaboration Message, a Collaboration Chat Member, and Document ID + Table references to a record.

Notes: The Table field has a Table choices attribute limiting choices to the [task] and [interaction] tables. This table is locked down to the maint role. At this stage, I think we’ll need to wait and see if this table comes into play
Collaboration Chat Associated Record sys_cs_collab_record Usage: This table stores a reference to a Collaboration Chat, as well as a Document ID + Table reference to the originating record.

Notes: The Table field has a Table choices attribute limiting choices to the [task] and [interaction] tables. A Collaboration Chat will not work without an Associated Record. However, the task-based requirement for Sidebar is only validated at the table layer. If a record is generated with reference to a non-task table, this will still work! However, this may not behave as expected, as the fields it references for display likely aren’t present.
Collaboration Chat Attachment sys_cs_collab_attachment Usage: This table stores the sys_id of an attachment, as well as a Document ID + Table reference to a Collaboration Chat. This appears to be used for generating the simple ‘Attachment’ card in a Sidebar Chat.
Collaboration Chat Member Group sys_cs_collab_member_group Usage: This table stores references to Messaging Channel, Collaboration Chat, and a group ID.

Notes: This table is locked down to the maint role. Another one to keep an eye on.
Collab Chat Mention sys_cs_collab_mention Usage: This table stores references to User profiles (sys_cs_channel_user_profile) and Messages.

Notes: I have not been able to generate a valid mention as yet. I’ll update this when I have identified more information.
Collaboration Chat Message Reaction sys_cs_collab_message_reaction Usage: This table stores references to a Chat message and the reacting user, as well as the reaction content.

Notes: I have not been able to generate a valid record to display using this. I’ll update this when I have identified more information.
Collab Chat Settings sys_cs_collab_settings Usage: This table stores domain-specific configuration settings. At present, this controls the ‘Enable Emoji’ setting
Sidebar Member Query sys_cs_collab_user_query Usage: This table stores pre-configured membership queries for limiting and/or pre-defining membership

What we know so far and other objects

There are several Script and UX objects involved in making this application work, but I’ll discuss those in a later article. When a Sidebar chat is generated, it generates a Collaboration Chat record, a Collaboration Chat Member record per member, some initial Collaboration Chat Message records, and a Collaboration Chat Associated Record … record. This seems to be the baseline requirement of a Sidebar chat, which gives us an opportunity to look at how we can leverage this application in a programmatic fashion!

Thanks for dropping by and learning about Sidebar with me!

My next article will showcase how to create Sidebar conversations programmatically, and discuss applications of this for team collaboration and BCP communication in the event of popular enterprise collaboration platform outages! We’ll also look at some more of the inner workings of Sidebar, both the UX Components and Scripts, and how this could lend itself to some other platform use cases.

Other articles will include my experiments with building an administrative framework around this application, which will let me get my hands dirty with UI (You & I) Builder! If you have any feedback, questions, concerns, or kind words, I can be found in the SNDevs Slack as @Astrid, or occasionally in the Telegram and Discord! My other contact platforms can be found linked on my blog!

Posts in this series