Skip to content

Requester widget MVC

Problem

Service Desk issues (which are regular issues created by the Support bot (Users::Internal.support_bot) and have the service_desk_reply_to (aka external_author) field set) will be migrated to work item tickets.

On the backend side most functionality would still be available after a switch to the ticket work item type, but the frontend would lose certain functionality that's available today.

(Service Desk) Issue List: External author in issue metadata

We display the external author of the issue in the issue metadata of the Service Desk issue list view. This replaces the author of the issue which is the Support bot for all Service Desk issues. This only applies to the Service Desk issue view (because we didn't want to touch the legacy issue view before the work item transition). The URL is https://gitlab.com/group/project/-/issues/service_desk/.

Service Desk issues display like regular issues on the normal issue view.

image

Issue detail: External author in header

We display the external author of the issue in the header part of the issue detail view.

image

In a nutshell

Who requested the service desk ticket? In the context of Service Desk this person is not the work item creator (author).

Proposal

  1. We should avoid to use the same position we used on the legacy issue detail view, because it doesn't fit into the widget architecture of the work item framework.
  2. We add a new widget requester or external_author to the right sidebar.
  3. The widget is only available for the WIT Ticket.
  4. The widget should be close to the assignee (or generally to the top) so it's easy for Service Desk agents to find.
  5. The MVC would be a read-only widget to apply the current Service Desk functionality.

Future iterations

  1. The external author can be set explicitly (and changed)
    1. We'll display a small edit button beside the current value or empty value. If clicked we'll display a test input which can be saved. This will send a mutation to update the value in the backend.
    2. We should add the new value to the list of external participants and keep the old value as an external participant
  2. The widget is also available in the new work item flow and is mandatory for the ticket work item type. This will allow us to create fully functional tickets from the UI (and work item API).
  3. Add the source of the request to this widget or add a new widget called source to work items. This can be used to indicate the origin of the ticket.
    1. For tickets created via email the value would be email
    2. Tickets created via the API the value would be api unless the customer specifies a custom value like app or feedback-form.
    3. Other options could be chat etc.

Implementation plan for MVC iteration

  1. Add a new widget
  2. The widget's GraphQL query returns the externalAuthor of the work item (respecting the obfuscation) or (even better) we add it to the global query because external_author is available on the work item, so it doesn't add much to the request payload and we avoid a second query.
  3. The frontend widget displays the external author. No interaction possible for now.

Action items

  1. Decide on a name:
    1. Requester (more general)
    2. External author (similar to author)
Edited by Marc Saleiko