Organization association
This guide covers how we perform organization association at GitLab.
Technical Details
- Deployment type:
Ad-hoc - Note: This page only applies to Zendesk Global, as organization association is done via the Zendesk-Salesforce sync for Zendesk US Government
- Note: It is common for users to need to be associated and ask for others to be associated. Focus on the requester first (as it simplifies adding the others).
Understanding organization association
What is organization association
Organization association is the process that ties a Zendesk user to an organization.
The process for association
The very generalized process looks like:
graph TD;
A--> B
B-->|Yes| C
B-->|No| D
C--> J
D-->|GitLab.com| E
D-->|Self-Managed or GitLab Dedicated| F
F--> G
G--> H
H--> I
I--> K
E--> K
J--> K
A(Set metadata on ticket)
B{Is requester already associated?}
C(Pre-checks)
D{What product type?}
E(Attempt auto-association)
F(Ask for proof of entitlement)
G(Locate organization)
H(Pre-checks)
I(Manually associate user to organization)
J(Use app to associate new users)
K(Reply to ticket with appropriate macro and mark as solved)
Step 1: Set metadata on the ticket
Before proceeding, you need to ensure the metadata on the ticket is populated and set properly. Normal form submission should cover most metadata, so your specific focus should be on the ticket field Support Ops Problem Type (which you should be setting to Manage my organization's contacts).
Once populated, submit an update to the ticket to ensure it is saved.
After doing this, proceed to Step 2
Step 2: Check if pre-authorized
If a user is already associated to an organization, they are likely pre-authorized to manage their organization’s support contacts. As such, the process for this is much simpler:
- Perform the Pre-checks
- Gather the list of emails to add to the organization in a comma separated list
- Example:
alice@example.com, bob@example.com, charlie@example.com
- Example:
- Open the Support Ops Super App
- Click
Associate User - Put the list of emails in the input box
- Click the
Associatebutton - Confirm success via the app’s output
- Reply to the customer confirming the changes have been done (making sure to set the ticket’s status to
Solved)
If they are not already associated, proceed to Step 3
Step 3: Determine product type
The steps from here will vary depending on the product type, so we need to know it. If the user has already provided us the information needed, use it to determine the next step to take:
- If the product type is GitLab.com, proceed to Step 4
- If the product type is Self-Managed or GitLab Dedicated, proceed to Step 5
If they have no provided it, reply to the ticket asking the user for their proof of entitlement.
Step 4: Attempt auto-association
Note: The app does the Pre-checks automatically for you.
For organization’s who purchased a GitLab.com subscription, the process is much simpler:
- Open the Support Ops Super App
- Click
Attempt Association - Click the
Attempt auto-associationbutton
This will then perform various checks to see if the user can be auto-associated. The results will be displayed in the app.
If they are associated, reply to the customer confirming the changes have been done (making sure to set the ticket’s status to Solved).
If they failed to associate, determine if it was an app problem or they failed entitlement checks:
- For app problems, see Common issues and troubleshooting.
- If they failed entitlement checks, send a reply with the macro indicating they are not an owner on a top-level paid namespace.
Step 5: Ask for entitlement information
Note: The user in question must be using a company email. If using a generic one (such as Gmail, Yahoo, etc.), we cannot proceed.
Next we need to ask for entitlement information. For Self-Managed and GitLab Dedicated users, this can come in a variety of methods:
- The requester can provide us the license ID of their subscription
- The requester can provide us the cloud activation code for their subscription
- The requester can provide us the raw license file for their subscription
- The requester can provide us a license usage export CSV file
What they provide us will determine the next steps:
- If a license ID, proceed to Step 6
- If a cloud activation code, proceed to Step 7
- If a raw license file, proceed to Step 8
- If a license usage export CSV file, open the file and grab the license key value. Then proceed to Step 8
Step 6: Locate the license from an ID
To locate the license from an ID:
- Login to the Customers portal admin panel via Okta
- Navigate to the Licenses page
- Add
/xxxxto the end of your URL (replacingxxxxwith the license ID)
Make note of the license’s URL you are at (it will be needed later for a note).
Note: If the cloud activation shows it is a trial (the value of the Trial is Yes), it is not a valid cloud activation (and the user has failed to pass entitlement checks). If this occurs, inform the user it is a trial and is not a valid paid subscription.
From this page, grab the value of Zuora subscription name and proceed to Step 9.
Step 7: Locate the cloud activation
To locate the cloud activation:
- Login to the Customers portal admin panel via Okta
- Change your URL to
https://customers.gitlab.com/admin/cloud_activation?query=XXXX(replacingXXXXwith the cloud activation code) - Click the show button of the found cloud activation (looks like an
iin a circle)
Make a note of the cloud activation’s URL you are at (it will be needed later for a note).
Note: If the cloud activation shows it is a trial (the value of the Trial is Yes), it is not a valid cloud activation (and the user has failed to pass entitlement checks). If this occurs, inform the user it is a trial and is not a valid paid subscription.
From this page, grab the value of Subscription name and proceed to Step 9.
Step 8: Locate the license from the key
To locate a license from the key:
- Login to the Customers portal admin panel via Okta
- Navigate to the Licenses page
- Click
Validate License - Paste the key into the textarea
- Click the
Validatebutton
From this page, copy the value of the id attribute from the object and proceed to Step 6.
Step 9: Locate the order
To locate the order (from the subscription name):
- Login to the Customers portal admin panel via Okta
- Navigate to the Orders page
- Click
Add filterat the top-right of the page - Click
Subscription name - Change the drop-down to the right of the
Subscription namebutton toContains - Put the subscription name (copied from previous steps) into the input box
- Hit
EnterorReturnon your keyboard - Click the show button of the found order (looks like an
iin a circle)
Make a note of the order’s URL you are at (it will be needed later for a note).
From this page, scroll down to Billing account, click the link, and proceed to Step 10.
Step 10: Get billing account information
Make a note of the billing account’s URL you are at (it will be needed later for a note).
Copy the value of the following:
Salesforce accountSold to
At this point, you have all the needed information to proceed to Step 11.
Step 11: Locate the organization
Here, you will need to use the Salesforce account value to locate the organization. Locating it from this depends on the character length of the value:
- For 15 character values, do a Zendesk search of
sfdc_short_id:xxx(replacingxxxwith the value) - For 18 character values, do a Zendesk search of
salesforce_id:xxx(replacingxxxwith the value)
Make note of the organization URL you located (it will be needed later for a note) and proceed to Step 12.
Note If you do not find an organization, please see No organization found.
Step 12: Validate information
Here you will need to review all the information you have to determine if the user has passed entitlement checks. The key things to check:
- Was the license/cloud activation for a trial?
- If the license/cloud activation for a trial was for a trial, they have not passed entitlement checks.
- Does the
Sold tovalue from the billing account match what the user provided when filing the ticket?- If it does not match, they have not passed entitlement checks.
Add an internal note collating your findings and all information gathered. It should look like the following:
If using a license
- License: LINK_TO_LICENSE
- Order: LINK_TO_ORDER
- Billing account: LINK_TO_BILLING_ACCOUNT
- Sold-to: SOLD_TO_EMAIL
- Salesforce ID: SALESFORCE_ACCOUNT_ID
- Organization: LINK_TO_ORGANIZATION
If using a cloud activation
- Cloud activation: LINK_TO_CLOUD_ACTIVATION
- Order: LINK_TO_ORDER
- Billing account: LINK_TO_BILLING_ACCOUNT
- Sold-to: SOLD_TO_EMAIL
- Salesforce ID: SALESFORCE_ACCOUNT_ID
- Organization: LINK_TO_ORGANIZATION
How you proceed from here depends on if the user passed entitlement checks:
- If they failed entitlement checks, ensure your internal comment includes the reason for failing validation, post the note, and reply to the user accordingly.
- If they passed entitlement checks, add your internal note and proceed to Step 13.
Step 13: Manually associate the user
With all that done, you need to associate the user. To do this:
- Copy the organization’s name
- Navigate to the user’s page in Zendesk
- Paste the value in the
Organizationarea - Click on the matching name of the organization from what shows
After doing so, reply to the customer confirming the changes have been done (making sure to set the ticket’s status to Solved)
Removing associated users
If an associated user requests other associated users be removed, you will need to do this manually in Zendesk. To do this:
-
Navigate to the user in question to remove
-
Add the following to the
Notesattribute for the user:De-associated as per LINK
- Replacing
LINKwith the ticket link you are working from
- Replacing
-
Click the value under
Organization -
Type a hyphen (i.e
-) -
Click the blank value (will look like
-)
After doing so, reply to the customer confirming the changes have been done (making sure to set the ticket’s status to Solved)
Pre-checks
Before proceeding to associate a user to an organization, always check the following:
- The association of users to the organization would not cause the organization to surpass the 30 support contact limit
- There are not organization notes/details indicating you should not proceed with the request
If any of those checks fail, you cannot proceed. See Common issues and troubleshooting for information on what to do when the checks have failed.
Common issues and troubleshooting
This is a living section that will have items added to it as needed.
Attempt auto-association app fails to locate organization
In cases where the Attempt Association app failed to locate the correct Salesforce account or organization, you will need to locate it manually.
To do this:
- Go to the
GitLab Super App - Click
User Lookup - Click the
Searchbutton - Review the output under
Group memberships - Locate the top-level paid namespace they are an owner of and copy it
- Go to the
Support Ops Super App - Click
Namespace Lookup - Paste the namespace in the input field
- Click the
Searchbutton - Review the output to locate the correct Salesforce account (under
Salesforce info) - Do a Zendesk search of
salesforce_id:xxx(replacingxxxwith the value) - Use the found organization to Manually associate the user
If any of that fails, make an internal note indicating what is going on and assign the ticket to the Customer Support Operations, Fullstack Engineer to review.
Association would cause organization to surpass the 30 contact limit
If adding more users to the organization would cause it to surpass the 30 contact limit, you need to reply to the user stating the problem. Make sure to include a list of the current associated users for them to review.
Once the customer replies back telling you what changes to make to correct the problem, proceed as you normally would have in the process.
Organization has notes or details saying not to proceed
This will vary from case to case. When in doubt, make an internal note indicating what is going on and assign the ticket to the Customer Support Operations, Fullstack Engineer to review.
No organization found
If you found a Salesforce account, but not an organization, it can mean one of the sync mechanisms GitLab uses have had an issue.
- If the Salesforce account is missing the subscription (or the subscription is missing the product charges), the Zuora<>Salesforce sync has likely encountered an issue. You may be able to rectify this by forcing a resync. To do that:
- Navigate to the Billing Account in Salesforce
- Click the down caret at the top-right of the page (to the right of the Edit and Clone buttons)
- Click Sync Data from ZBilling
- Wait a few minutes, then re-check the subscriptions for the Salesforce Account
- If everything looks fixed, you will need to wait 1-2 hours for the ZD<>SFDC sync to create the organization. While you wait, add an internal note about what occurred, assign it to yourself, and check back on the ticket in 1-2 hours.
- If everything does not look fixed, use the
For anything elsebullet below
- For anything else, make an internal note indicating what is going on and assign the ticket to the Customer Support Operations, Fullstack Engineer to review
f895738e)
