AppDynamics Application Intelligence Platform

3.9.x Documentation


Learn by Watching

Doc Maps

Skip to end of metadata
Go to start of metadata

This topic covers release information for AppDynamics Pro versions 3.9.x.

If you are reading this in PDF format, many links will open in the product documentation wiki. AppDynamics continuously improves its product documentation. The most current release notes are on the wiki at Platform Release Notes.

3.9.x Updates Updates

This release addresses a security vulnerability in a third-party component used in the Controller.  The vulnerability could allow remote attackers to obtain sensitive information via vectors that are associated with a request, and related to injected tags and external entity references in XML documents. For more information, see AppDynamics Security Alert - 49474.


Java Agent Updates

  • Fixed a bug to an enhancement introduced in The agent can read system properties from an file stored in <agent_home>/conf/. The JVM treats properties from the file the same as startup parameters. Values in do not override any properties passed explicitly in the JVM startup script. Updates

Resolved Issues

Agent Memory leak in a Spring interceptor moduleCORE-47035 Updates

Resolved Issues

AgentCode deadlock in Java AgentCORE-46420 Updates

Resolved Issues

AgentAgent background transformation tasks slowing application startupCORE40168
AgentDeadlock in Java Agent due to oracle.classloader.PolicyClassLoaderCORE-40863
AgentJava agent creating large boolean array resulting in Java heap issues CORE-40998
AgentMultiple WARN messages from BCIEngine appear in logCORE-42731
PHP AgentSegfault in snapshot creation when backend limit reachedCORE-40923
UISearching for snapshots does not respect business transaction name filterCORE-38056 Updates

Resolved Issues


.NET AgentOverhead added in cases where the application loads and unloads AppDomains 1000s of times during business transaction executionCORE39113
AgentAgent unable to transform classes in the backgroundCORE-39433
Node.js AgentNode.js agent unable to register multiple nodes through one proxy on a Controller using SSLCORE-38746
PHP AgentSegfaults occur when the backend limit for the PHP agent is exceededCORE-38979 Updates

Resolved Issues

.NET AgentThe .NET Agent Coordinator may fail to start in some casesCORE‑38485

3.9.8 Updates


Node.js Agent Updates

  • The Node.js Agent supports Node.js version 0.10.33, 0.10.34 and 0.10.35.

Java Agent Updates

  • New entry points and correlation capabilities for JRuby. 

Resolved Issues

.NET AgentUnable to instrument Windows services with 3.9.4 agentCORE‑37026
.NET AgentAppDynamics agent causing application issues during the Snapshotting processCORE-37122
.NET AgentAgent log has NPECORE-37455
AgentJRuby: Disparity between CPM metric reported for Tier1->external calls level vs Tier->external calls->Tier2 levelCORE-36977
AgentCapped number of error objects cached for processingCORE-37069
AgentPOJO rule definition in 'transaction discovery session' may incorrectly be registered as a real transactionCORE-37333
AgentNPE in MetricAggregatorFactoryCORE-37338
AgentNode property coalesced-cg-generation does not take effectCORE-37339
AgentGetting java.lang.ArrayIndexOutOfBoundsException when aggressive snapshots feature is enabledCORE-37383
AgentDBCam integration doesn't close statement, likely leads to exhausting open cursors.CORE-37453
AgentThread correlation not working; classes extending callable are not instrumentedCORE-38108
Controller-APMApplications list is not loadingCORE-37679
Controller-DevOpsEvent email body has missing substitution parameterCORE-37184
Controller-DevOpsHR cache load performance issue (during controller startup)CORE-37484
Controller-DevOpsPerformance degradation in health rule processing on large controllersCORE-37647
Controller-DevOpsPerformance issue while loading health rule objects from the databaseCORE-37802
Controller-PlatformSlow queries due to missing indexCORE-37519
PHP AgentAgent SegFault when reporting a PHP Exception with a null trace propertyCORE-37110
UIBusiness Transaction List: Min & Max Response times are always 0 in v3.9CORE-33433 Updates

Resolved Issues

Controller-PlatformUpgrade scripts not workingCORE-38562 Updates

Resolved Issues

Controller-DevOpsNPE in RelevantAppEntitiesStash causes health rules to not evaluateCORE37126
Controller-DevOpsEmail body missing data causing a ${eventInfo.getEventMessage()} substitution to not renderCORE-36324

3.9.7 Updates


Policies and Alerts

There is now a Service Endpoint health rule type. Previously you had to create a Custom health rule to monitor Service Endpoints.

Java Agent

This update adds built-in support for async transaction tracking for Tibco ActiveMatrix BusinessWorks.   

Resolved Issues

AgentApplication throws NameAlreadyBoundException with 3.9.x agentsCORE35897
AgentStackTraceHelper.calculateHashCode() can NPECORE-36511
AgentBCIFixer batch process fails to re-transformCORE-36976
AgentCallStackSampler QualityTracker has incorrect statsCORE-37012
Controller-APMNPE occurs within EventReceiverBean.saveEventsCORE-36737
Controller-BlitzQuorumServerNodeTest failingCORE-37029
Controller-PlatformController upgrade from to 3.9.7 failsCORE-36616
Controller-PlatformSilent install ignoring port in response fileCORE-37006
Controller-PlatformJVM options not restored after Controller upgradeCORE-37027
EUMCloudWeb Request has two different values in Geo Dashboard screenCORE-35101
Node.js AgentSnapshots taken with "maxSnapshotsPerPeriod" set to 0CORE-36838
UIUnable to add a Group BT under metric category for graph series in Custom DashboardCORE-28175
UIContinuous NPE in the server.log fileCORE-34289 Updates

Resolved Issues

Controller-DevOpsPolicies that are "Batch Actions Per Minute" do not work after Controller restartCORE-36857
Controller-DevOpsControllers are running out of memory due to policies not startingCORE-36703

3.9.6 Updates



  • MySQL version update. The version of the MySQL database embedded in the Controller has been updated from 5.5.38 to 5.5.40. See Security Notes for more information. 

Resolved Issues

.NET AgentMVC3 AsyncController HTTP entry (OOTB) stopped working in 3.9CORE34168
AgentMonitoring Mbean attributes with brackets in namesCORE-28551
AgentMemory Leak - NewTransactionIdManager.txIdentifierToCTC holds 2GBCORE-32604
Agentnew Date().toString() may deadlock some jvms because of a jvm issueCORE-34857
AgentDBCam integration NPE potentialCORE-35277
AgentAsync metrics not appearing when using chained constructorsCORE-35728
Controller-DevOpsBaseline based health rule violation triggered when the system is quiet.CORE-35031
Controller-DevOpsIn the REST URL for a path, when ART metrics = 0, value is -1 instead of 0CORE-35289
Controller-DevOpsThe logic in checking whether HR is enabled is incorrect.CORE-35771
Controller-DevOpsApp|Agent|Availability metric becomes "unknown" when agent is downCORE-35811
Controller-DevOpsDB calls in HealthRuleProcessorBean.checkEntityPresent() are degrading HR performanceCORE-35961
Controller-DevOpsChange default HR processing to single-threaded so that agent snapshots don't cause overheadCORE-36144
Controller-PlatformSnapshot's SQL Call view is showing truncated SQL stringCORE-29387
Controller-PlatformSummary metrics timestamp is not consistent between db and cacheCORE-35100
Controller-PlatformJava servlet errors on all apps loading page as well as at the node levelCORE-35354
Controller-PlatformTurn on events query fast path by default for 3.9.6CORE-36195
EUMCloudAccounts with no EUM enabled apps shouldn't stay active in EUM CloudCORE-35666
EUMCloudEUM on-prem installer version is always
Node.js Agent[Node.js] Agent creates infinite loop in instrumented codeCORE-35493
UIUnable to determine No of callsCORE-34495
UIEUM Default Naming Configuration 'Enabled' flag doesn't get savedCORE-34696
UI'Edit Transaction Discovery' leads to nothingCORE-34972
UIDocs: Link Broke in EUECORE-35199
UIUI : Geo Map should only plot region having page request.CORE-35473
UIUI : Data miss matching in the Geo Dashboard.CORE-35474 Updates

Resolved Issues

UIBeta Flow Map data from 3.8 release is causing exceptions in 3.9CORE-35673 Updates (SaaS Only)

Resolved Issues


Controller-EUMApp registration request times out on multi-tenant ControllersCORE-35248


3.9.5 Updates


Node.js Agent

  • A new autoSnapshotDurationSeconds option is provided for changing the length of automatically-generated process snapshots.

PHP Agent

  • The PHP Agent supports the PHP SOAPClient as an exit point.


  • Floating point numbers can now be used to define health rule conditions.
  • Severity parameter added to the Custom Event API.


  • iOS Crash Dashboard now handles gracefully the situation where the requested event type has not been registered with event store.
  • Sorting Network Request Snapshot list by columns now functions correctly.

Resolved Issues

.NET AgentBackend naming configuration for WCF backends is not workingCORE‑34365
AgentCustom activity tracking not resetting CRC, causing outbound correlation headers to grow without bound in some casesCORE32360
AgentDownstream tier does not continue transaction if upstream hasn't registered business transaction yetCORE34799
AnalyticsAdd @JsonIgnoreProperties(ignoreUnknown = true) on all analytics client POJOs that are serialized/deserializedCORE33888
AnalyticsDisable CORS in ElasticsearchCORE33920
AnalyticsNPE in indexer logCORE-34120
Controller-APMController server throws error while loading BT dashboard; data inconsistenciesCORE-34092
Controller-DevOpsHealth rules based on baseline percentage never violateCORE-26777
Controller-DevOps, UIInteger overflow when setting up health rule conditionCORE-29228
Controller-DevOpsFalse Alerting in BT response time ruleCORE-29678
Controller-DevOpsAfter upgrade from 3.7.15 to 3.8.4 Controller alerts no longer workCORE-30969
Controller-DevOpsAND logic not working for custom event property matching in policiesCORE-34485
Controller-EUMMobile RUM: iOS Crash dashboard fails if event never registeredCORE-34219
Controller-EUMMobile EUM data not displaying properly on
Controller-EUM, InstallerMissing property in domain.xmlCORE-34575
Controller-PlatformController MySQL service wrapper needs to properly detect when Controller database has shut downCORE-33202
Controller-PlatformHistorical event details not displaying in dashboardCORE-34364
EUMCloudJsonSyntaxException thrown when processing app config registrationCORE-33332
EUMCloudNPE in BrowserBeaconProcessorCORE-34698
EUMCloudCollectors data uploaded with wrong timestampCORE-35062
InstallerProblems installing 32-bit Controller whose version is on 32-bit WindowsCORE-34533
JSAgentError running Adrum.js on FirefoxCORE-33821
Machine AgentNPE in Machine Agent with JavaHardwareMonitorCORE-34293
PHP Agent[Proxy] org.zeromq.ZMQException: Operation cannot be accomplished in current state(0x9523dfb)CORE-32432
UISorting columns doesn't work (Network Request Snapshots)CORE-33585
UIUnable to scroll to newest custom time ranges in manage time range listCORE-34140
UITransaction snapshot drill down not working correctlyCORE-34164
UITypo in Servlet Custom Match rule Help popupCORE-34342
UIService-end-points dashboard % error column shows values for error/minCORE-34510
UIUploading of ProGuard files is brokenCORE-34747 Updates

Resolved Issues

Controller-PlatformCache for tracking zero filled metrics cache does not expire metricsCORE-44567 Updates

Resolved Issues

Agent, Controller-APMController drops metric data at the Daylight Saving Time (DST) changeCORE-22789 Updates


  • REST API added to create and delete Action Suppressions

Resolved Issues

ControllerREST API Action Suppression
ControllerFlow map not loading for certain Controllers after upgrade to 3.9.4

3.9.4  Updates


  • The Controller installer now checks to ensure that its bitness (whether 32 or 64 bit) matches that of the operating system before performing an installation or upgrade. It presents an error if the 32-bit installer is used on a 64-bit system or the 64-bit installer on a 32-bit system. 

Node.js Agent

  • The Node.js Agent supports Node.js version 0.10.32.

.NET Agent



  • Behavior corrected in situations where an attempt is made to provision a license when a license already exists.  


  • Format for Analyze queries has been updated 


  • Error message added when there is an error downloading resource details 
  • Potential race condition in JavaScript Agent on Firefox 25 corrected 
  • Additional detail displayed in map of Poland in Geo Dashboard 

EUEM On-Premise Processor

  • The HTTP and HTTPS beacon ports for the EUEM Processor are now configurable in the installer. Previously the installer set the ports to port 80 and 443 respectively. If you have set up a reverse proxy, changing the ports requires an update to the adrum.js file after upgrade. 

  • You can now configure an HTTPS port as the Processor listening port in the installer. The port number is 7002, by default. For instructions on setting up the keystore for the Processor, see Install the On-Premise End User Experience Management Processor

  • If you are upgrading an existing EUEM installation, it is important to note the following change made by the installer. During upgrade, if the existing HTTP or HTTPS port on which the EUEM Processor listens is 80 or 443 (or another port that requires root permissions to open the port on the machine), the installer requires you to change the port numbers. Be sure to change the port number to one that does not require root permissions for a process to open, such as the default numbers 7001 or 7002. 

Dev Ops

  • Health rules which cannot currently be evaluated (when a necessary metric is not available, when a necessary baseline is not available, when a new health rule has just been added, or when the system has just restarted) are now displayed with a status of "Unknown"  

Resolved Issues

.NET AgentFixed an issue with HTTPClient backend naming
.NET AgentFixed an issue instrumenting BizTalk Service
.NET AgentFixed an issue with Unattended Install when the AD_SetupFile path contains a space
AgentFixed an issue with tracking jobs in Tibco BusinessWorks
Controller-DevOpsHandle Health Rule data unavailability gracefully "Unknowns"
Controller-DevOpsASW with HRs selection fails to work as expected
Controller-EUMFixed an issue with the display of resource timings in EUM Browser snapshots
Controller-APM, Controller-EUMFixed an issue selecting EUM-related metrics for custom dashboards
Controller-PlatformFixed an issue with remediation scripts
EUMCloud, UIAdded more granularity to Poland geo locations
EUMCloudAllow specifying http and https port during install of on-prem processor
EUMCloudProvide stop command for stopping eum processor on Windows
InstallerFixed Known Issue when running the Controller installer from a shell launched by the su command 
Node.js AgentBusiness transactions correctly display call graph icons, which is only when a process snapshot was captured in the same time range as the transaction snapshot
UIAgent Internal events are no longer displayed by default on Controller UI
UIIssue with script timeouts on BT List using IE9 and IE10 Updates

Resolved Issues in

Agent, Controller-APMController drops metric data at the Daylight Saving Time (DST) change Updates

Resolved Issues in

UI/EUEMPage Composition data now correctly displays on the Page Dashboard - fixes a UI regression in 3.9.3 Updates

Resolved Issues in

Controller-DevOpsReduces the activity an enabled entity logger on a controller records in the FINE logs for com.appdynamics.RULES.PROCESSING.

3.9.3 Updates

.NET Agent

  • Previous versions of the .NET Agent required that you instrument executable Windows services as standalone applications. Now the agent allows you to instrument them as Windows services.


  • The static stall threshold option is no longer available across agent types, including PHP and Node.js Agent. For more information, see the update notes for release If you had a static stall threshold configured prior to 3.9.3, when you upgrade your PHP or Node.js agent your static stall threshold will automatically change to a standard deviation of 300.
  • A security vulnerability affecting version 3.9.x Controllers has been addressed. Note that version 3.8.x and earlier Controllers are not affected by this vulnerability. If using a 3.9.x version of the Controller, it is strongly recommended that you upgrade to 3.9.3.
  • Administrators can now enforce minimum password complexity requirements for local (AppDynamics-authenticated) users in the Controller UI. For more information, see Configure Users.  

Java Agent

  • Java Agent performance problems that occur when JDBC backend naming rules are changed to non-default values have been fixed.
  • URLs now appear in the URL entry point column of the snapshot list for transactions originating in Apache Synapse Enterprise Service Bus (ESB).

Node.js Agent

  • Error reporting has been improved. The agent now reliably reports errors for unhandled exceptions. You can restrict the errors that are reported and counted by configuring errors to be ignored. See Configure Error Detection for Node.js.
  • When you monitor nodes in a cluster, to reduce overhead you can configure them to use a multi-tenant proxy by setting all agents to use the same proxy. This involves setting the control directory for the agents that will share a proxy and proxy script, and then starting the proxy manually. See Set Up A Multi-Tenant Proxy for Node.js Agents.

See also the Controller update regarding static stall thresholds.


  • Health rules with very long names fired but did not show up in the Health Rule Violations List.  They are now visible.
  • Can now fire policies based on custom events,including by property, if desired.  See Configure Policies.
  • Can now add custom event "type" and key/value properties to custom events. See Use the AppDynamics REST API.
  • Can now filter events based on custom events in the Events dashboard.  See Filter and Analyze Events.
  • Can now post a custom event to a tier, node, and/or business transaction. See Use the AppDynamics REST API.
  • Can now customize the name of a multi-tenant controller as it shows up in notifications for a single tenant.  See Use the AppDynamics REST API.

EUEM On-Premise Processor


  • The User Data field in the Browser Snapshot was accidentally removed as the page was migrated from FLEX to HTML.  It is now visible in the page.
  • Assisted Injection Using Attribute Injection for MVC Razor Version 5 is now supported.  See Supported Environments and Versions - Web EUEM.
  • A potential race condition using Firefox 25 has been resolved.
  • The JavaScript agent downloaded from the Getting Started agent wizard now has the correct port numbers.
  • The Lite version of Web EUEM now includes the following features: Geo-Dashboard, Page/Iframe List, and Usage Stats for the previous 24 hour period for up to 500 million page views.  Access via APIs is supported.  See Web EUEM License.
  • Clicking on the Geo-Dashboard tab now navigates to appropriate page.
  • End User Experience in left navigation bar refreshes more quickly.

Mobile EUEM

  • The Lite version of Mobile EUEM now provides the Crash Dashboard and Crash Snapshots, the latter covering the previous 365 days. It covers up to 5 million devices. See Mobile EUEM Licenses.
  • End User Experience in left navigation bar refreshes more quickly.

Resolved Issues in 3.9.3

.NET AgentBlacklisted instrumentation of certain assemblies.
.NET Agent.NET Agent now supports multiple information points on the same method.
.NET Agent.NET Agent now detects HttpClient.GetAsync exit points.
.NET AgentWCF service/operation name now shows in the Exit Call window.
.NET AgentFixed an issue with ASP.NET service endpoints.
AgentMemory leak no longer occurs when using custom JMX metric rules.
AgentURL now displays in snapshot for Apache Synapse.
AgentThere is no longer any performance degradation with non-default JDBC configuration.
AgentInstrumentation no longer causes java.lang.Throwable: java.lang.ClassCircularityError.
AgentServlet Splitting on custom expression now works with 3.8.5 agent and above.
AgentEUM auto injection configuration now works when notxdetect=true is received from struts.
AgentStall standard deviation threshold no longer miscategorizes transactions.
ControllerCan now post an event to a tier, or to a particular node via REST API.
ControllerCan now create policies based on Custom Events.
ControllerJMX metrics now display correctly.
ControllerEmail alerts now point to the correct Controller URL.
ControllerFixed application and Business Transaction flow map rendering issue.
ControllerController metric cache issues no longer causes gaps in data on UI.
ControllerHealth rules with long names fire now display in Health Rule Violations.
ControllerStatus light widget is now working in custom dashboard.
ControllerBusiness Transactions are now shown in "End User Experience" request page.
ControllerSpecial characters in MySQL root password no longer break controller.bat and
ControllerDefault logging location for Controller analytics-processor modified.
ControllerThere are no longer problems with computing rollups when a subset of agents are not reporting any data.
DocsYou can now view the video on the App list.
EUMCloudInformation is now correct for Blackberry devices in EUM.
EUMCloudThe EUEM web agent downloaded from the Getting Started area of the UI now has the correct port numbers.
EUMCloudEUM installer now checks that the EUEM database account can be created.
EUMCloudNullPointerException no longer appears in the crash processor.
EUMCloud, UIRedefined EUEM Lite entitlements for Web and Mobile.
EUMCloud, UIClicking on GeoDash tab now navigates to the correct window.
Node.js AgentUncaught exceptions are now reported as BT errors if the BT context can be established or as application errors if there is no BT context.
Node.js AgenttmpDir is now derived from a hash of controller host, controller port, application name, tier name, and node name.
Node.js AgentAdded a ctrlDir setting to the options in the profile statement that has precedence over the default "folder schema" in /tmp/appdynamics. This directory is auto-created if not available.
PHP AgentA null pointer exception introduced in the upgrade from  3.9.0 to that prevented metrics from being reported in some circumstances was fixed.
UIImproved resizing left nav bar response.
UISwitching locations no longer resets your browser choice.
UISEP Configuration screen now flows smoothly.
UI[MhSS] Clone Delete and Archive buttons on the horizontal panel.
UIDrilling down to specific URL now works in Custom Dashboards on Chrome and Internet Explorer.
UIStrengthened authorization controls.
UI[Custom Dashboard] Added a column Tier on graph properties and series.
UIDrilling down from alert emails to Node/Tier now works correctly.
UIApp/BT Dashboard and flow map now displays fully when the screen is maximized.
UIImproved agent download using Getting Started Wizard.
UIImproved End User Experience to prevent it from hanging.
UIImproved Transaction Scorecard display.
UICharts at bottom of flow maps now show correct time ranges.
UIBT list no longer has filters open by default.
UIUser Data is now displays properly in browser beacon's snapshot view.
UIImprovements to Custom Events API ensure they show up correctly in the Events workspace.
UIYou can now have Policies filter on custom events. Updates

Resolved Issues in

ControllerCustom Dashboards no longer blank in UI after Controller upgrade to build 43 from
Controller, UINode level flow map now shows links between tiers

Flow map now shows inbound async calls Updates


  • Addresses a security vulnerability that affects 3.9.x Controllers. Controllers versions 3.8.x and earlier are not affected by this vulnerability. Updates

  • Static stall thresholds are no longer available. The change has the following effect on Java and .NET agents by version:  
    • Agents version 2.x support dynamic thresholds. All stall configuration that were static will be changed to standard deviation threshold of 300.
    • Agents versions 3.0 through do not support dynamic thresholds. If static stall threshold was enabled for those agents, they are reverted back to 45-second static thresholds. 
    • Agents version 3.8 and above support dynamic thresholds. If stall configuration was disabled for transactions prior to upgrading, you will experience no impact. 
  • Addressed a XSS security vulnerability in the edit widget functionality. For more information, see the Security Notes

3.9.2 Updates


  • The modifyJvmOptions utility has been enhanced to provide additional error handling if adding duplicate system parameters. Also, the command for listing existing Java Options in the domain configuration has been added for the Windows version of the utility. To use it, enter: 

    modifyJvmOptions.bat list

    For more information about modifyJvmOptions, see Modify GlassFish JVM Options


  • Previously action suppression created unnecessary event traffic to the database. This has been removed.  All information continues to be logged. 
  • Previously setting up action suppression events showed in the UI only the top level entity  and not any children that might also be affected.  Children are now shown.  See Action Suppression.

Java Agent

  • Introduces a new Java Agent node property, disabled-features. This property specifies data collection mechanisms that should be disabled at the agent, allowing application owners to limit data reported by the agent for security or privacy reasons. For more information, see disabled-features in the App Agent Node Properties Reference.  

.NET Agent

Node.js Agent

  • The Node.js Agent supports Node.js version 0.10.31.
  • The Node.js Agent supports node-redis v12.X.

EUEM Licensing

  • Known Issue: If you add an EUEM license to an existing application, you may need to log out of the controller and log in again before the Configure->Instrumentation->End User Experience tab correctly shows that you are currently licensed for End User Monitoring. 


Mobile EUEM

Resolved Issues in 3.9.2

AgentAgent node backend limit exceeded
AgentJava Agent Scala support — JVM throws malformed class name due to scalac bug
AgentSpring RMI instrumentation not applied
AgentServlet split using POST request parameters not working
ControllerIssues using modifyJvmOptions utility when adding proxy host and port Java properties
ControllerEvent email body has ${eventInfo.getEventMessage()}
ControllerAction Suppression object scope (runtime) screen does not show full information
ControllerrestoreJvmOptions.bat fails on Windows Controller
.NET AgentCustom correlation configuration subsections do not inherit supersection values
.NET AgentError in onMethodEndTracked: System.OverflowException: Arithmetic operation resulted in an overflow
.NET AgentAsync tracking: Web Service BeginXXX/EndXXX callback logic is missed in the snapshot
UIAdd checkbox to show BT / Ajax with Load
UIStatus of "Completed" for EUM snapshots is confusing
UIResource waterfall should show idle time in a different color
UISelecting an entry in Processes tab scrolls the list back to top
UIFix computation of DOM Ready Time
UIInconsistent filter UX in mobile Custom Data; missing "Load" filter Updates


  • Resolves an issue that permitted users with custom roles to access applications in the UI for which their roles have not been intentionally granted permission. This issue affected any Controller upgraded from 3.8.x and earlier to 3.9.x, and resulted from the upgrade process inadvertently granting custom dashboard permissions by default to all custom roles.
    If you have manually modified the custom dashboard permissions for roles, you should verify and if necessary reapply your manual changes after completing the upgrade to 
  • Resolves an issue that caused Controller upgrade on Windows to sometimes fail with an error message of “Unable to restore JVM options.” This happens if the modifyJVMOptions.bat utility has been previously used to modify domain.xml settings on the Controller instance. 

Resolved Issues in

ControllerUsers allowed to view un-permitted application.
ControllerUpgrade fails on Windows Controller due to changes by modifyJVMOptions.bat

3.9.1 Updates


  • If a policy is deleted while there are open incidents associated with the policy or modified so that the health rule is no longer in violation, the health rule violation incident is canceled. Previously, the canceled event was not available as an actionable event and not evident in the event browser UI. You can now configure notifications for the canceled event.  


  • The Node.js Agent supports Node.js version 0.10.30.

Resolved Issues in 3.9.1

AgentIndexOutOfBoundsException exception generated due to cross-tier correlation errors when business transaction limit is exceeded
ControllerJRE bundled with installer updated to 1.7 to match Controller JRE version
ControllerUnused security certificates generate errors in the Controller server log
Analytics (Event Service)Disable dynamic scripting in bundled Elasticsearch

New and Enhanced Features in 3.9

The following components have new and enhanced features in release 3.9.

End User Experience Management

  • On-prem version of EUEM Processor (previously known as the EUEM Cloud) now supported
  • Expanded percentile support across the UI
  • Known Issue: The installer does not return control to the command prompt after installation and startup of the production mode EUEM Processor on Windows is complete. As a result, after installation, you cannot log off from the terminal session without terminating the EUM processor. For more about EUEM Processor installation, see Install the On-Premise End User Experience Management Processor.    

Web End User Experience Management Updates

Mobile End User Experience Management Updates

  • Updated crash dashboard, using faceted search on full data event store

  • Crash grouping on crash dashboard
  • APIs for creating custom metrics, timers, and information points in mobile agents
  • New tab for displaying custom data

Controller Updates

Installation and Platform Changes

  • The Controller installer contains an additional configuration option, the location of an Elastic Search file store. The file store is used by the Event Service, which is used by Database Monitoring. 

  • The Controller administration script now includes additional command options for stopping and starting the Event Service on the Controller. The Event Service is not started by default. The command options are start-events-service and stop-events service. For example to start the Event Service on Linux, run the script from the bin directory under the Controller home, as follows:  

    ./ start-events-service 

    On Windows, from an elevated command prompt, run: 

    controller.bat start-events-service 

Policies and Alerts

  • Instead of suspending health rule evaluation after a health rule violation for a period of time, the Controller now continues to evaluate violating health rules every minute. It throttles actions for a continuing condition using the new health rule violation events, "Health Rule Violation Continues - Warning" and "Health Rule Violation Continues - Critical". For more information, see Health Rules

User Interface

HTML5 pages and flow maps as follows:

  • HTML5 flow maps for the Application and Business Transaction dashboards. The new flow maps include better automatic layout, filtering by performance data, updated visual design, and more. 
  • Business Transaction List
  • All Applications Dashboard

Custom Dashboards

  • Grid Layout option: This is the default option for creating custom dashboards. Grid layout gives you a flexible layout that is easy to rearrange on the canvas. Grid layout also scales in size when viewed on mobile devices. See Create a Custom Dashboard.
  • Custom Dashboard Templates: This special type of custom dashboard is a template that enables you to create a dashboard which can be reused effortlessly across different nodes and tiers without remapping metrics.

Java Agent Updates

  • Business Transaction Discovery assists you in instrumenting your applications. Within this tool you can see the business transactions being captured, modify the auto-discovery business transaction detection criteria or the configuration you are currently using, view the expected results of these changes, and repeat the change/view process until you are satisfied with the results. Then you can choose to apply the changes if you want. To help you decide what types of transactions you should monitor, you can use Class/Method Browser within the Business Transaction Detection tool that provides full visibility into the classes and methods detected, including snapshots of those transactions.

  • Percentile Metrics configuration can now be accomplished through the Controller. 
  • Callgraphs can now be configured to capture slow transaction collections through the Enable Aggressive Slow Snapshot Collection option. This feature is enabled by default. When enabled, this feature ensures that full call graphs are captured for business transactions monitored using Java Agent.
  • jdbc-resultsets App Agent for Java node property: Use this property to indicate the implementation classes of the java.sql.ResultSet interface that should be instrumented. 
  •  New Platforms supported:

.NET Agent Updates

See Supported Environments and Versions.

PHP Agent Updates

  • The installer now writes controller information to the PHP configuration files (php.ini or appdynamics_agent.ini depending on your setup), instead of to controller-info.xml. If you need to modify controller information settings post-installation, do so in the PHP configuration files. The old controller-info.xml file is no longer used.
    Existing customers should update their environments to reflect this change. If you use an automated release process to install and update your app agent, modify that procedure to write the controller information properties to the ini file. If you create or modify agent settings via apache, set them accordingly at the apache.conf level.
    See Controller Information in the PHP Configuration Files.
  • HTTP Data Collectors are now supported for the PHP agent. See Data Collectors and Configure Data Collectors.
  • Information points, which provide business metrics and code metrics, are now supported. See Configure Information Points for PHP.
  • A  version (-v) option has been added to the installer to specify the version of PHP being instrumented. Required only if the default install directory is not used.
  • A multi-tenant proxy has been implemented. Formerly a separate proxy was started for each app server. Now multiple agents report to a single proxy.

Node.js Agent Updates

  • AppDynamics introduces the new Node.js application agent. This agent was in beta prior to 3.9. A 3.9 controller is required.
  • A multi-tenant Java proxy has been implemented. The agent now supports a Node.js application running in cluster mode and reports each child process as a unique node in the controller.
  • The root node in the process snapshot call graph no longer includes the idle time.
  • Custom match and exclude rules can be configured for Node.js business transactions. See Configure Transaction Detection for Node.js.
  • Business transaction configurations by default provide an exclude rule for static content, such as as images, CSS files, JavaScript files, and static HTML pages, so that business transactions are no longer automatically detected for this type of content. You can view and modify this rule in the business transaction configuration screen.
  • Business transaction invocation details are available in process snapshots. See the BUSINESS TRANSACTIONS tab in View Process Snapshots.
  • In the summary of business transaction snapshot, you can link to the call graph of the associated process snapshot if there is one.
  • New metrics for CPU usage, memory, and I/O are available per Node.js process. See Node.js Process Metrics.
  • Exit call information is now available in transaction snapshots. See the EXIT CALLS tab in View Process Snapshots.
  • If you are running EUEM or Mobile APM and server-side correlation has been set up for those agents, correlation is available between associated web browser / mobile data and Node.js business transactions. This means that a business transaction link in a browser or mobile snapshot takes you to the flow map for the associated business transaction on the Node.js side. You may also occasionally transaction snapshots linked with associated browser/mobile snapshots, but this is not common for the Node.js agent.

Agent-Controller Compatibility Matrix

Security Notes

The following sections list general security information for AppDynamics. For release-specific security information, see the update notes for that release.

Security Vulnerability Addressed

Release and 3.9.3 address security vulnerabilities affecting 3.9.x Controllers. Controllers version 3.8.x and earlier are not affected by the vulnerabilities.

Release resolves a security vulnerability. For more information, see Updates.  

MySQL Security Issues Addressed  

The update to MySQL 5.5.40 in release 3.9.6 addresses various security issues in the MySQL database embedded in the Controller, including:

  • CVE-2012-5615
  • CVE-2014-4274
  • CVE-2014-4287

For details see (requires login).

Edit Widget Functionality XSS Vulnerability Addressed 

Release address a cross-site scripting vulnerability exposed by the edit widget functionality.  


Release 3.9.1 addresses CVE-2014-3120 by modifying the default Elastic Search configuration to disable dynamic scripting.

SSL Certificate Monitoring Extension

The SSL Certificate Monitoring Extension is a new extension on the AppDynamics eXchange that reports the expiration date of SSL certificates on the machine as a metric to the Controller. The extension reports the certificate expiration date metric for the domains and at the interval you configure.

For more information, see the SSL Certificate - Monitoring Extension listing.

POODLE Vulnerability (CVE-2014-3556) Remediation

The POODLE vulnerability allows attackers to exploit a flaw in how browsers handle encryption in SSL 3.0. To avoid exposure to this exploit, modify the Controller configuration to prevent SSL 3.0 connections, as follows:

  1. Open the domain configuration file for the Controller for editing:
  2. Modify the ssl element for the secure HTTP port listener by setting the ssl3-enabled attribute to false, as follows:  

    <protocol security-enabled="true" name="http-listener-2">
       <http request-timeout-seconds="300" timeout-seconds="300" default-virtual-server="server" max-connections="-1" send-buffer-size-bytes="32768" compressable-mime-type="text/html, text/javascript, text/css" compression="on">
  3. You may also need to set the tls-enabled attribute of the ssl element to true, but only if you have legacy agents or runtimes that only support TLSv1.0. As of release 3.8.1, the Controller supports TLSv1.1 and TLSv1.2 implicitly. 

  4. Restart the Controller to have the change take effect.

For more information on the POODLE vulnerability, see

Controller Notes

The following notes apply to on-premise Controller users. You can download the Controller for installation on premises from the AppDynamics Download Center.  

  • Installing or upgrading the Controller on any Windows system that does not use English as its system language will fail. For the workaround, see Non-English Language Setting Workaround.

  • An exception may appear in the logs on startup indicating that an Apache .jar file is missing. This is harmless and the exception can be ignored.

  • An exception sometimes occurs during application configuration export. 

  • The Controller installation or upgrade may fail to complete if a loopback entry is missing from the hosts file. This error is sometimes indicated by an error message in the installer screen output similar to the following:

    Failed to reach Controller at<port>/controller/createAccount?action=ping! 

    Where <port> is usually an ephemeral port number.

    If the Controller installation or upgrade fails, verify that your hosts file includes a mapping between the loopback address ( and the hostname of your system. The hosts file is typically found in the /etc/hosts directory in Linux systems, and C:\Windows\System32\drivers\etc on Windows.

    The mapping in the hosts file should look something like: localhost <your-hostname>

    If the entry is missing, back up the existing hosts file, add the localhost mapping, and try upgrading or installing again. You can get the actual hostname you need to map by entering the hostname command on Linux, or entering "ipconfig /all" at the Windows command prompt.

Installation Notes for the Controller

  • Before you install or upgrade the Controller, validate the hardware requirements as listed at Controller System Requirements. The sizing requirements have been updated and now include recommendations based on metrics per minute in addition to the number of nodes in the installation. Features such as monitoring asynchronous threads and End User Monitoring increase the number of metrics per minute flowing to the Controller.
  • AppDynamics strongly recommends that you install the Controller on a dedicated machine for adequate stability and performance.
  • The disk space requirements differ for each of the Controller performance profiles. Verify the disk space requirements for your performance profile at Controller System Requirements.
  • If installing on Windows, note the operational and configuration guidelines listed in Install the Controller on Windows for preventing the possibility of Controller data corruption due to conflicts with existing Windows processes. Also note the workaround if installing or upgrading a Windows machine that does not use English for its regional settings, see Non-English Language Setting Workaround.

Known Issues for Installation

  • The Controller installation may fail to complete if a loopback entry is missing from the hosts file. See known issues in the previous section for more information. 
  • Fixed in 3.9.4: Running the Controller installer from a shell launched by the su command may cause Controller installation or upgrade to fail with errors indicating that the process was unable to create or write to database files.

    This error results from the installer attempting to perform database update operations as the user associated with environment settings rather than the one specified by the su command (usually the root user).

    To work around this issue, invoke the su command with a dash character (“su -“). This causes the user environment settings for the shell to be updated with the identity specified by the su command.

  • .NET 3.5 features are required in some cases to install the Controller as a Windows service. If you try to install the Controller as a service, the following error appears: "The following feature couldn't be installed: .NET Framework 3.5". See .NET Framework 3.5 requirement issue for more information and a workaround. 

  • When the MySQL database is registered and running as a Windows service and the host machine is shut down or rebooted, Windows may kill the service before it has finished shutting down gracefully. See MySQL Shut Down Failure for more information and a workaround.

  • After installation, the Controller log server.log contains error messages logged at the severity level SEVERE indicating that certificates have expired. The certificates are unused by the Controller, and it is safe to disregard the errors. 
  • Fixed in 3.9.5 Installing the Controller on 32-bit Windows systems may fail, as indicated by application server startup failure due to a missing DLL. See Windows 32-bit Installation Issue for more information and a workaround.

MySQL Shut Down Failure on Windows as a Service

When the MySQL database is registered and running as a Windows service and the host machine is shut down or rebooted, Windows may kill the service before it has finished shutting down gracefully. If this occurs, MySQL will consider its databases crashed and will perform crash recovery operations the next time it starts up.  This crash recovery may result in the MySQL startup exceeding the Windows service startup timeout, which prevents the Controller app server from starting automatically. 

This issue is due to Microsoft service manager default timeouts that are too short for the MySQL shutdown operation and MySQL crash recovery on startup. As another effect of this issue, attempting to shut down the Controller service directly using Services.msc or service sc.exe "ServiceName" fails with an error messages indicating that the service cannot be stopped.   

To work around the issue, modify the WaitToKillServiceTimeout and the ServicesPipeTimout settings in the registry.

Note that there is a bug in Windows 7 and Server 2008 R2 that causes the service manager to ignore WaitToKillServiceTimeout.

  • Windows Server 2008 R2, 6.1.7600
  • Windows Server 2008 R2 SP1, 6.1.7601
  • Windows 7, 6.1.7600
  • Windows 7 SP1, 6.1.7601

If using one of these versions of Windows, you must install the hotfix described at before performing the workaround

To check for the presence of KB2549760 hotfix, run the following command from an elevated command prompt (run as administrator):

 wmic qfe list | findstr KB2549760

After verifying the hotfix, edit the Windows registry to increase the default values for the keys that control the process start and shut down wait timeout. The keys to edit are: 

Key NameSubkeyRecommended value

The registry may also be updated from the command line with the following commands:

reg add HKLM\SYSTEM\CurrentControlSet\Control /v WaitToKillServiceTimeout /t REG_SZ /d 600000 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control /v ServicesPipeTimeout /t REG_SZ /d 1200000 /f

These changes set the process shutdown timeout to 10 minutes and the process start up timeout to 20 minutes.

.NET Framework 3.5 Requirement Issue 

Certain features of the .NET 3.5 Framework are required in order to install the Controller as a Windows service. .NET Framework 4.0 alone may not be sufficient. If you try to install the Controller as a service, the following error appears: "The following feature couldn't be installed: .NET Framework 3.5".

This occurs on the following versions of Windows Server:

  • Server 2012
  • Server 2012 R2

The following instructions assume the use of Windows Server operating systems (which have the Windows Server Manager). If you encounter this issue on a non-server version, such as Windows 8, you need to download the .NET 3.5 executable and perform the equivalent installation. 

To install .NET 3.5 features: 

  1. As a user in the Administrators group on the local computer, open Windows Server Manager. 

  2. Select "Add Roles and Features" and click Next. 

  3. Click Next until you get to the Server Selection screen. 

  4. Select the server on which you want to install the Controller as a service. 

  5. Click Next in the Server Roles. 

  6. In the Select features screen, expand .NET Framework 3.5 Features and select .NET Framework 3.5. Keep the .NET Framework 4.0 option selected. 

  7. Click Install.

You can now install the Controller as a service as described in the documentation.

Windows 32-bit Installation Issue 

Fixed in 3.9.5 On 32-bit Windows systems, the Controller may not be installed correctly, resulting in application server startup issues due to a missing DLL file. When you attempt to manually start the application server, the following error appears: 

Error: missing `server' JVM at `C:\AppDynamics\Controller\jre\bin\server\jvm.dll

To work around this issue, follow these steps:

  1. For a new installation, uninstall the Controller if a previous installation attempt has failed. 
  2. Download and install the 32-bit JDK 1.7.0_55 on the machine. Make sure that the file jdk\jre\bin\server\jvm.dll is present.
  3. Add the following location to PATH environment variable: C:\Windows\system32
  4. Open an elevated command prompt (run the command prompt as Administrator). 
  5. Run the Controller installation with the pause mode flag: 
    setup.exe -Vpause_mode=true 
    In this mode, after the installer deploys files, it shows a message saying "Installer is run in pause mode. Click ok to continue." This gives you a chance to modify the file system, as described in the next step, before the installer starts and configures the Controller components. 
  6. When the installer pauses, at a command prompt, copy the jdk\jre\bin\server folder to the Controller\jre\bin folder.
  7. Return to the installer dialog and click OK to continue normal installation.

Upgrade Notes for the Controller

  • For all major upgrades, AppDynamics recommends that you upgrade both the Controller and Agents. This ensures that you get all the latest Agent features and fixes. 
  • If you are upgrading both the Controller and the Agents, first upgrade the Controller then upgrade the Agents. 
  • Make sure that you have saved a backup of the following files before starting the upgrade procedure:  
    • <Controller_Installation-Directory>/db/db.cnf 
    • <Controller_InstallationDirectory>/appserver/glassfish/domains/domain1/config/domain.xml
    • <Agent_Installation_Directory>/conf/controller-info.xml
  • If you are applying the upgrade by passing a response file to the installer, you must pass the response file generated by the installer at first installation. This response file is at .install4j/response.varfile under the Controller home directory. Make sure that the settings in the file reflect any configuration changes you have made since installation. 
  • Known issue: An issue prevents you from changing the database port number at upgrade time if using a response file. If you set a different database port in the response file, response.varfile, from the one used by the Controller, the installation times out while attempting to start the database. 
  • Known issue: In certain scenarios, the Controller upgrade on Windows may fail with an error message of “Unable to restore JVM options.” This happens if the modifyJVMOptions.bat utility has been previously used to modify domain.xml settings on the Controller instance. If you encounter this error on an attempted upgrade, upgrade to or contact AppDynamics Support for the workaround.
  • Known issue: The Controller upgrade may fail to complete if a loopback entry is missing from the hosts file. See known issues in the previous section for more information. 

For more information, see Upgrade the Controller.

Non-English Language Setting Workaround

When installing or upgrading the Controller on Windows systems that use a regional and language setting other than English (United States), the Controller installation or upgrade fails. The error message may indicate that the Controller database failed to start or that the setup processes failed to reach the Controller. The error occurs when the installer is attempting to start the Controller, and causes the installer to abort the installation or upgrade. 

To work around this issue:

  1. Change the regional and language setting on the system to English (United States).
  2. Perform the upgrade or installation. 
  3. When the upgrade or installation is finished, edit the <Controller_installation_directory>\bin\controller.bat and replace the following line: 



    IF "%TIME%" == "%START_TIMEOUT%" (

    This line appears in the :startControllerDB section of the file. Notice the addition of quotes around both values used in the value comparison. 

  4. Save your changes. 

  5. Change the regional and language settings back to its original value.

Mobile APM Notes

  • Known Issue: the Mobile Geo Dashboard may time out if there are a large number of apps and large amounts of data.
  • The Mobile APM Agent increases the number of metrics reported, which may affect the hardware requirements for an on-premise controller. See Additional Sizing Requirements.

App Agent for Java Notes

Obtain the AppDynamics App Agent for Java download for your system from the AppDynamics Download Center:

  • For Sun and JRockit JVMs, download
  • For IBM JVMs, download

For more information see:

Known Issue: the new JVM Guard feature may not consistently report JVM crashes. 

.NET Agent Notes

Obtain the AppDynamics App Agent for .NET download for your system from the AppDynamics Download Center:

  • For Windows 32-bit, download dotNetAgentSetup.msi
  • For Windows 64-bit, download dotNetAgentSetup64.msi

For more information see:


Deprecation Notice

AppDynamics will no longer support Microsoft’s Internet Explorer 8 effective October 2014 for the Controller user interface. Deprecation of IE 8 becomes necessary as the Controller UI makes increasing use of rich, dynamic HTML 5.

Who does this affect?

  • All SaaS customers accessing AppDynamics Controller environments will need to upgrade their Internet Explorer browser to a newer version, or use another supported browser platform.
  • On-premise customers deploying versions of AppDynamics Controllers shipped after October 2014 will need to upgrade their Internet Explorer browser to a newer version, or use another supported browser platform.
  • AppDynamics will continue to support IE 8 on Controllers from earlier releases.

This does not affect EUM clients. The JavaScript Agent will continue to capture End User Experience metrics from IE 8 browsers.