> ## Documentation Index
> Fetch the complete documentation index at: https://docs.endorlabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Manage Azure DevOps App on Endor Labs

> Learn how to manage your Azure DevOps App integration in Endor Labs.

export const Draft = ({children}) => {
  const SHOW_PARAM = 'show';
  const SHOW_VALUE = 'hidden';
  const BORDER_RGB = '220, 38, 38';
  const BORDER_COLOR = '#dc2626';
  const BG_LIGHT = 'rgba(254, 226, 226, 0.65)';
  const BG_DARK = 'rgba(127, 29, 29, 0.35)';
  const HEADER_TEXT_LIGHT = '#111111';
  const HEADER_TEXT_DARK = '#f5f5f5';
  const CARD_MARGIN = '1rem 0';
  const CARD_BORDER_RADIUS = '8px';
  const HEADER_PADDING = '0.75rem 1rem';
  const HEADER_FONT_SIZE = '1.25rem';
  const BODY_PADDING = '0 1rem 0.75rem';
  const ref = useRef(null);
  const [isDark, setIsDark] = useState(false);
  useEffect(() => {
    const checkTheme = () => {
      const root = document.documentElement;
      setIsDark(root.dataset.theme === 'dark' || root.classList.contains('dark'));
    };
    checkTheme();
    const observer = new MutationObserver(checkTheme);
    observer.observe(document.documentElement, {
      attributes: true,
      attributeFilter: ['data-theme', 'class']
    });
    return () => observer.disconnect();
  }, []);
  useEffect(() => {
    if (!ref.current) return;
    const params = new URLSearchParams(globalThis.location.search);
    if (params.get(SHOW_PARAM) === SHOW_VALUE) {
      ref.current.style.display = 'block';
    }
  }, []);
  return <div ref={ref} className="not-prose" style={{
    display: 'none'
  }} role="note" aria-label="Draft internal content">
      <div style={{
    margin: CARD_MARGIN,
    border: `2px solid ${BORDER_COLOR}`,
    borderRadius: CARD_BORDER_RADIUS,
    backgroundColor: isDark ? BG_DARK : BG_LIGHT,
    boxShadow: `0 0 0 1px rgba(${BORDER_RGB}, 0.15) inset`
  }}>
        <div className="not-prose" style={{
    padding: HEADER_PADDING,
    fontWeight: 700,
    fontSize: HEADER_FONT_SIZE,
    color: isDark ? HEADER_TEXT_DARK : HEADER_TEXT_LIGHT,
    textAlign: 'center'
  }}>
          Do not use! Draft content. Development in progress.
        </div>
        <div style={{
    padding: BODY_PADDING
  }}>{children}</div>
      </div>
    </div>;
};

export const image_0 = undefined

You can make changes to the Azure DevOps App integrations or delete them. You can view the activity logs for the Azure DevOps App and rescan your Azure DevOps projects on demand.

1. Select **User menu** > **Integrations** from the left sidebar.

2. Click **Manage** next to **Azure DevOps** under **Source Control Managers**.

   <img src="https://mintcdn.com/endorlabs-b4795f4f/fKubUymrAaKP441f/images/setup-deployment/scm-integrations/azure/azure-app-manage.webp?fit=max&auto=format&n=fKubUymrAaKP441f&q=85&s=e6fd0bc0d13908b6c10a447dc8e0272e" alt="Manage Azure DevOps App" style={{width: '80%'}} width="2588" height="344" data-path="images/setup-deployment/scm-integrations/azure/azure-app-manage.webp" />

3. Click the three vertical dots next to the integration.

   You can choose from the following options:

   * [**Update Credentials**](#update-credentials)
   * [**Edit Integration**](#edit-azure-devops-app-integration)
   * [**Delete Integration**](#delete-endor-labs-azure-devops-app)
   * [**View Sync Log**](#view-sync-logs)

### Update Credentials

To update the Azure DevOps App credentials:

1. Click the three vertical dots next to the integration, and select **Update Credentials**.

   <Note>
     You cannot update the host URL of an existing integration. To monitor a different organization, create a new integration.
   </Note>

2. You can update your **Personal Access Token**.

3. Click **Save**.

<Note>
  **Initiate rescan manually**

  Credential updates take effect at the next scheduled scan cycle. To apply changes immediately, select **Rescan Org**.
</Note>

### Edit Azure DevOps App integration

To edit the Azure DevOps App integration:

1. Click the three vertical dots next to the integration, and select **Edit Configuration**.

2. You can update your personal access token and choose the scanners.
   <img src="https://mintcdn.com/endorlabs-b4795f4f/fKubUymrAaKP441f/images/setup-deployment/scm-integrations/azure/azure-app-manage-edit.webp?fit=max&auto=format&n=fKubUymrAaKP441f&q=85&s=b0881db0664c2af68d7198e48d592b00" alt="Edit Azure DevOps App integration" style={{ width: '60%' }} width="1026" height="1124" data-path="images/setup-deployment/scm-integrations/azure/azure-app-manage-edit.webp" />

3. Select **Pull Request Settings** to edit the PR scans configuration. See [Azure DevOps App PR scans](/setup-deployment/scm-integrations/azure-app/azure-pr-scans#configure-pr-scans-for-existing-azure-devops-integrations) for more information.

   <Note>
     **Permissions for your credentials**

     Ensure that the credentials have the Code read and write access. See [create an access token](/setup-deployment/scm-integrations/azure-app/azure-pr-scans#create-an-access-token) for more information.
   </Note>

4. Click **Update Configuration** to save the changes.

   The changes are applied from the next scanning cycle.

   <Note>
     Click **Rescan Org** after editing the integration to apply changes immediately instead of waiting for the next scheduled scan.
   </Note>

### Delete Endor Labs Azure DevOps App

To delete an Azure DevOps App integration, click the three vertical dots next to the integration, and select **Delete Integration**.

When you delete the integration, it will also delete all child namespaces, projects and references associated with the auto-generated root group namespace. It also deletes any manually created namespaces and projects under auto-generated namespace.

Deleting an integration requires **Update** permission on the `Installation` resource kind. See [Authorization policies](/platform-administration/rbac/authorization-policies#permission-rules) to learn about permission rules.

### View sync logs

Endor Labs detects and reports installation and synchronization errors during organization sync. These include expired tokens, insufficient permissions, invalid host configurations, and certificate issues. Sync logs report those errors that you can resolve.

{image_0 || <img src="/images/setup-deployment/scm-integrations/scm-installation-error.webp" alt="Sync logs showing error" />}

To view sync logs, click the three vertical dots next to the integration, and select **View Sync Logs**.

The sync logs display details of synchronization attempts, including timestamps, error types, and diagnostic messages. These logs help identify issues such as authentication failures or configuration problems.

#### Types of errors

The sync logs detect and display the following categories of sync failures:

* **Expired or invalid Personal Access Tokens (PATs)**: The PAT used for authentication has expired or is no longer valid. Edit the integration and provide a valid token.
* **Insufficient PAT permissions**: The PAT does not have the required scopes, such as repository read access. You must generate and provide a PAT with the correct access.
* **Certificate related access issues**: The certificates required to connect to the SCM are invalid, outdated, or untrusted. This error occurs in self-hosted GitLab instances that use custom SSL certificates. Update the certificate configuration or ensure the certificate chain is properly trusted to resolve the issue.
* **Incorrect or invalid host URLs**: The configured URL is incorrect or unreachable. Since you cannot edit the host URL, you need to delete and reinstall the integration using the correct URL.

After you resolve the issue, the error is automatically cleared during the next successful scan. You can manually re-trigger the scan using **Rescan Org** to verify the resolution immediately.

<img src="https://mintcdn.com/endorlabs-b4795f4f/fKubUymrAaKP441f/images/setup-deployment/scm-integrations/azure/sync-logs-azure.webp?fit=max&auto=format&n=fKubUymrAaKP441f&q=85&s=6545bc3c1c43d22e8bee2b934a8b71b3" alt="Sync logs" style={{width: '70%'}} width="1480" height="680" data-path="images/setup-deployment/scm-integrations/azure/sync-logs-azure.webp" />

### Manually rescan Azure DevOps projects

Azure DevOps App scans your repositories every 24 hours. Click **Rescan Org** to manually trigger a scan outside the 24-hour period.

Click **Scan More Repositories** to go to **Projects**, where you can add more projects to scan through the Azure DevOps App.
