What Oleria discovers
Once connected, Oleria continuously discovers and maps the following from your Controller:- Users - every Controller user, whether local, SAML, or LDAP, with name, email, and the roles assigned to them directly. Users who hold the Account Owner or Administrator role, directly or through a group, are marked as administrators. SAML users show single sign-on (SSO) as required. Local and LDAP users show SSO as not configured and password sign-in, and are marked as having API access, because AppDynamics lets them call its APIs with their username and password.
- Last activity and password changes - Oleria takes each user’s last activity, and last password change or reset, from the Controller audit history (see Known limitations). A user with no recent activity shows no last activity. Token requests by an API client that shares a user’s name don’t count as that user’s activity.
- Groups - every group, with its description. Groups mapped from SAML or LDAP are marked as synced from your identity provider. Groups created in the Controller are marked as custom.
- Roles - every role, with its description and a summary of its permissions. AppDynamics’ predefined roles are marked as standard roles, and all others as custom roles.
- Memberships - which users belong to which groups, which roles each user and API client holds directly, and which roles each group grants. A user’s effective access is their direct roles plus the roles of every group they belong to.
-
Non-human identities (NHIs):
Each API client’s client secret also appears as a credential, linked to its API client. A listed API client’s secret is always active and carries all of the client’s roles, so it’s shown with full authority. AppDynamics doesn’t report when a secret expires, was last used, or was last rotated. When AppDynamics reports who created an API client, and that user is discovered, the user is shown as the client’s owner. The API client this integration connects as is marked as Oleria’s connection.
-
Activity - events from the Controller audit history:
- sign-ins, failed sign-ins, and sign-outs;
- token requests made with an API client’s secret;
- roles assigned to or removed from users and groups, and permissions added to or removed from roles;
- users added to or removed from groups;
- password changes and resets, email changes, and re-enabled accounts;
- SAML and LDAP configuration changes;
- objects created, updated, or deleted, and application configuration, log level, and anomaly detection changes.
This integration covers identities, groups, roles, and activity. It doesn’t inventory business applications, tiers, nodes, business transactions, dashboards, or health rules, so Oleria doesn’t populate resource-level Access Graph or Access Inventory data for AppDynamics. A role’s application-level permissions appear only in its permission summary.
Prerequisites
- An AppDynamics SaaS Controller, at an address such as
https://acme.saas.appdynamics.com. On-premises Controllers aren’t supported. - An AppDynamics user with the Account Owner role, to create the API client and assign its role.
- Admin access on the Oleria platform to add a new integration.
Create an API client in AppDynamics
1
Open API clients
Sign in to your Controller as an Account Owner and go to Settings > Administration > API Clients.
2
Create the API client
Create an API client for Oleria. Its name can’t contain
@, /, or spaces, because Oleria signs in as <API client name>@<account name>.3
Generate a client secret
Generate a client secret for the API client and copy it. You enter it in Oleria later.
4
Assign a role
Assign the API client one of these roles, then save it:
- the Account Owner role (recommended);
- a custom role with the account permission Administration, Agents, Getting Started Wizard. See Known limitations for what it may not read.
5
Find your account name
Go to Settings > License > Account and note your account name. It’s often the sub-domain of your Controller URL, such as
acme in https://acme.saas.appdynamics.com.AppDynamics tokens expire after the API client’s default token expiration. Oleria requests a new token before each one expires, so you can keep the default.
Connect AppDynamics to Oleria
1
Open the integration
Go to your Oleria workspace, select Integrations -> select AppDynamics.
2
Complete the connection form
Provide the following:
3
Confirm the connection
Select Authenticate. Before it saves anything, Oleria:
- requests a token for the API client, as
<API client name>@<account name>; - reads the Controller’s roles, to confirm the API client can read users, groups, and roles;
- reads the AppDynamics account’s ID and name, to identify the connected account. If AppDynamics doesn’t return them, Oleria uses the Controller host and account name instead.
- Controller URL must be an https://*.appdynamics.com SaaS Controller URL - enter your SaaS Controller URL, such as
https://acme.saas.appdynamics.com. On-premises Controllers aren’t supported. - the Controller URL failed validation - Oleria couldn’t look up the Controller’s host name, or it points to an address Oleria won’t connect to. Check the URL for typos, such as a mistyped tenant sub-domain.
- Account name must not contain @, / or spaces or API client name must not contain @, / or spaces - check the name you entered.
- AppDynamics rejected the API client credentials - check the API client name, account name, and client secret. If you’ve lost the secret, generate a new one.
- The API client lacks the Account Owner role - assign the API client the Account Owner role, or a custom role with Administration, Agents, Getting Started Wizard.
- The Controller URL does not serve the AppDynamics RBAC API - check that the URL is your SaaS Controller’s address.
- reading AppDynamics roles - the Controller didn’t respond or was busy. Try again in a few minutes.
Edit the integration
When you edit the integration, you can change API client name and Client secret. Controller URL and Account name can’t be changed, because they identify the connected account.- Leave Client secret blank to keep the stored secret. If you change API client name, enter that API client’s secret too, because each API client has its own secret.
Verify the integration
Confirm the Controller appears on the Connected tab of your Oleria Integrations page with a status of Healthy. After the first sync completes, review the discovered users, groups, roles, API clients, and activity in your Oleria workspace. In the integration’s Capabilities and operation readiness section, Read users, Read groups, and Read roles show Available. If one shows Needs permission, check that the API client still has the Account Owner role, or a custom role with Administration, Agents, Getting Started Wizard. If the sync is marked as partially completed, the API client couldn’t read the API client list or the audit history, so API clients or activity are missing. See Known limitations.Remediation actions
Oleria can take these actions in AppDynamics. They’re available as soon as you connect. AppDynamics has no read-only credential, so you can’t connect without them (see the warning in Prerequisites).The Remediations page offers Revert only for Disable user accounts and Remove user from group. The integration supports the other reverts in this table, but the Remediations page doesn’t offer them yet. Oleria can revert only an action that completed or partially completed, never one that failed.
- Oleria reads the user before it makes a change. If the user already has, or doesn’t have, the role or group, Oleria makes no change, and reverting the action makes no change either.
- After AppDynamics accepts a change, Oleria reads the user again to check it. If that read fails, the action succeeds and is marked unverified, and you can revert it. If the read shows the user’s roles or groups don’t match the change, the action fails and can’t be reverted: check the user in the Controller.
- If AppDynamics answers a change with a server error, Oleria sends it again. If it still fails, or AppDynamics doesn’t answer, Oleria reads the user again, up to three times. If the change is there, the action succeeds but is marked unconfirmed, because Oleria can’t tell that the change was its own. If it isn’t, the action fails and nothing changed.
- Oleria won’t revert an unconfirmed action. Check the user’s roles and groups in the Controller and correct them there. This includes a removal in Disable user accounts that AppDynamics didn’t answer but that is in place when Oleria checks again: it’s listed as unconfirmed, and reverting the action doesn’t restore it.
- Reverting an action changes only what the action changed. If the role or group is already back to how it was, or the user, role, or group no longer exists, the revert makes no change and says why.
- Remove user from role removes only a role assigned directly to the user. If the user has the role only through a group, Oleria refuses and names the group. Use Remove user from group instead. If the user has the role both directly and through a group, Oleria removes the direct assignment and the action succeeds, but the user keeps the role through that group.
- If Disable user accounts fails partway, the action fails and reports which roles and groups it removed. Oleria can’t revert a failed action, so use that list to re-add the removed roles and groups in the Controller. If a revert fails partway, it reports which roles and groups it restored.
- Oleria refuses any change that would leave the Controller with no user holding the Account Owner role, directly or through a group. API clients with the Account Owner role don’t count, because they can’t sign in to the Controller. If Oleria can’t read the roles, groups, or users it needs to check this, it refuses the change. If it can’t find the Account Owner role, it refuses any change that would leave the user with no role that could be it, directly or through a group. A role could be the Account Owner role unless it’s one of AppDynamics’ other predefined roles. It checks again immediately before each change. If two changes that each remove a different Account Owner run at the same moment, both can pass the check, so remove Account Owners one at a time.
- Oleria refuses to change API clients, including the API client this integration connects as. Change an API client’s roles in the Controller.
- For SAML users, roles and groups mapped from SAML attributes may be applied again the next time the user signs in.
- If AppDynamics refuses Add user to group or Remove user from group for a group mapped from SAML or LDAP, the action fails and reports that the group is managed by that provider. During Disable user accounts, the same refusal stops the action: partway if it already removed something, otherwise before it changes anything.
- Delete user follows the same Account Owner rule as the other actions: Oleria refuses to delete the last user with the Account Owner role. It also refuses to delete an API client or a user that doesn’t exist.
- If AppDynamics doesn’t answer a delete, or answers with a server error, Oleria sends it again, up to three times in all. If the user is gone by the time Oleria sends it again, the earlier attempt deleted it, so the action succeeds and still records who the user was. Reverting Create user or Create group deletes the same way.
- Create user creates only local users, because AppDynamics creates users from SAML or LDAP when they first sign in. AppDynamics requires a password for a local user, so the action needs a password or needs Oleria to generate one. Oleria doesn’t return a generated password, so reset the password in the Controller before the user signs in. AppDynamics has no inactive state, so the new user can sign in as soon as it exists, even when the request asks for an inactive user or doesn’t say. The action’s result notes this. With no role or group, the user has no functionality. If AppDynamics refuses the email address, Oleria creates the user without one, and the action’s result says so. Add the email address in the Controller.
- If a user or group with the same name already exists, ignoring upper and lower case, Create user and Create group fail and change nothing.
- If adding the new user to a role or group fails, the action fails but the user still exists. Delete the user in the Controller, or run Delete user on it.
- If AppDynamics doesn’t answer a create, Oleria doesn’t send it again. It checks for the name instead. If the user or group now exists, the action fails and can’t be reverted, because Oleria can’t tell it created it. Check it in the Controller and delete it there if needed.
- The result of Create user shows whether any group it added grants the Account Owner or Administrator role.
- Reverting Create user deletes only the user the action created. Oleria refuses if that user now has a different name, or if it has since become the last user with the Account Owner role.
- Reverting Create group deletes the group only if it has no members. If anyone was added to it, Oleria refuses. Remove the members first, then revert again.
- Oleria can’t assign roles to existing groups or update users and groups.
Known limitations
- SaaS Controllers only. Oleria connects only to Controllers whose host is
appdynamics.comor ends in.appdynamics.com, overhttpson port 443. On-premises Controllers aren’t supported. - No user status. AppDynamics doesn’t report whether a user is deactivated or locked, so every listed user shows as enabled. A user deactivated in the Accounts Management Portal shows as enabled until they’re removed from the Controller.
- No MFA or sign-in policy. AppDynamics doesn’t report multi-factor authentication (MFA) or its authentication provider settings, so MFA and the Controller’s sign-in requirements show as unavailable. Oleria also doesn’t report when a user was created.
- 30 days of history. When you connect, Oleria reads the last 30 days of the Controller audit history, and activity doesn’t go back further. Last activity and last password change start from those 30 days. After that, each sync reads the history since the previous one, and Oleria keeps the most recent date it has seen. On a Controller with a very busy audit history, Oleria may read less than 30 days for last activity and last password change. Audit events don’t include an IP address.
- Custom administrator roles. Only the predefined Account Owner and Administrator roles mark a user or API client as an administrator. A custom role with account administration permissions doesn’t.
- API clients come from an undocumented interface. AppDynamics doesn’t document an API that lists API clients, so Oleria reads them the same way the Controller’s own interface does. If AppDynamics refuses that read or changes it, Oleria skips API clients and their secrets, and the rest of the sync continues. If the read fails temporarily, for example with a server error or a timeout, Oleria marks the sync as failed instead of skipping API clients, and reads them again on the next attempt. Activity still syncs, but events made with API clients aren’t attributed to them on that sync. The same applies if the API client can’t read the audit history: Oleria skips activity and keeps syncing everything else. A custom role with Administration, Agents, Getting Started Wizard may not be able to read API clients or the audit history; the Account Owner role is the most reliable way to avoid both.
- Other credentials. Oleria doesn’t discover tokens generated with an API client’s secret, temporary access tokens, account or license access keys, or analytics API keys. AppDynamics can’t list tokens, and the keys aren’t inventoried.
- No Accounts Management Portal. Oleria reads the Controller only. Company and license administrators in the Accounts Management Portal appear only if they’re also users of the Controller.
- No AI agents. AppDynamics agents are monitoring software, not AI agents, so none appear.
- Large Controllers. AppDynamics returns each user, group, and role’s details one at a time, so the first sync of a Controller with thousands of users can take a while.

