> ## 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 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>;
};

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

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

2. Click **Manage** next to **Azure** 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 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-app-integration)
   * [**Delete Integration**](#delete-endor-labs-azure-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**.
2. You can update your **Personal Access Token**.
3. Click **Save**.

<Note>
  You cannot update the Azure DevOps organization URL. To monitor a different Azure DevOps path, create a new installation.
</Note>

### Edit Azure App integration

To edit the Azure App integration:

1. Click the three vertical dots next to the integration, and select **Edit Integration**.
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 App integration" style={{ width: '60%' }} width="1026" height="1124" data-path="images/setup-deployment/scm-integrations/azure/azure-app-manage-edit.webp" />
3. Click **Start Scanning Repositories**.
   The changes are applicable from the next scanning cycle.

### Delete Endor Labs Azure App

To delete an Azure 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.

### 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.

<img src="https://mintcdn.com/endorlabs-b4795f4f/WValpCeFuCmyj4QD/images/setup-deployment/scm-integrations/scm-installation-error.webp?fit=max&auto=format&n=WValpCeFuCmyj4QD&q=85&s=96ff537be979f065c0c1c444527dce35" alt="Sync logs showing error" width="1500" height="340" data-path="images/setup-deployment/scm-integrations/scm-installation-error.webp" />

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 projects

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

### Add more Azure projects to scan

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