Customer Database "for Service Desk" (or otherwise)

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Description

In order for Service Desk to be useful to an EE customer like us, we need to group Issues together under a Customer abstraction. Having an abstraction for a Customer would provide these features:

  • Customer info:
    • ID
    • Name
    • Description area (to cover a variety of needs such as listing points of contact, account type, or other use-case specific details)
    • Status (could be covered by labels, perhaps)
  • Customer Issues:
    • List of Issues (Open/Closed/All)

Proposal

  • Add Organization (Customer) entity and ability to:
    • GraphQL
      • Create
      • Read
      • Update
      • Delete (and/or change state?)
    • UI
      • Create
      • Read
        • Pagination
      • Update
      • Delete (and/or change state?)
  • Add Contact entity and ability to:
    • GraphQL
      • Create
      • Read
        • Pagination
      • Update
      • "Parent organization" link in create/update
      • Delete (and/or change state?)
    • UI
      • Create
      • Read
      • Update
      • Delete (and/or change state?)
  • Add Contact <-> Issue relationship (table)
    • Expose Contacts against issues
      • GraphQL
      • UI
      • Add system note from Issues::SetCrmContactService
    • Add ability to associate an existing issue with a Contact (thus indirectly associated with an Organization)
      • GraphQL
      • UI
        • Component/widget?
        • Quick action
          • Improve/add autocomplete etc?
    • Add ability to create a new issue with a Contact attached
      • ?
      • UI
  • Add ability to list issues associated with a Contact
    • GraphQL
    • UI
    • Add "token" thingy for issue search bar filter?
  • Add ability to list issues associated with an Organization
    • GraphQL
    • UI
    • Add "token" thingy for issue search bar filter?
  • Rollout feature?
    • Add group setting to toggle CRM on/off
    • Default feature flag to on?
    • Remove feature flag
    • Default CRM on: !108378 (merged)
  • Handle nested groups?
  • Docs
    • First iteration customer relations (crm) docs
    • Add some missing bits (issue search? add contact, add organization etc)
    • Add some records to GDK seed data???
  • Tech debt

One benefit is to be able to pull up all of a customer's issues when they call in.

Another benefit is to have people supporting a customer be able to quickly get up to speed on what is troubling a customer.

Overall this enables a company to provide excellent customer service to them by ensuring their needs are met.

Links / references

Edited by 🤖 GitLab Bot 🤖