PowerFlex: Unable to Apply PowerFlex License, Receive Error Code ASMCOMMONS.0070
Summary: Unable to apply PowerFlex license, receive error code ASMCOMMONS.0070.
Symptoms
- Correct XML file format, with no special characters
- All Resources and Resource Groups (RGs) are in a green and healthy state.
Error in the UI after attempting to apply for the Production license:

asmui.stdout.log reporting an error:
2024-07-31T15:39:32.402654894-05:00 stdout F "stackTrace" : [ ],
2024-07-31T15:39:32.402657319-05:00 stdout F "suppressedExceptions" : [ ],
2024-07-31T15:39:32.402659746-05:00 stdout F "status" : 500,
2024-07-31T15:39:32.402662113-05:00 stdout F "timestamp" : "2024-07-31T20:39:32.907+00:00",
2024-07-31T15:39:32.402664713-05:00 stdout F "error" : "HTTP 500 Internal Server Error",
2024-07-31T15:39:32.402667099-05:00 stdout F "path" : "/alcm/license",
2024-07-31T15:39:32.402669532-05:00 stdout F "messages" : [ {
2024-07-31T15:39:32.402671864-05:00 stdout F "id" : null,
2024-07-31T15:39:32.402674325-05:00 stdout F "messageBundle" : "ASMCommons",
2024-07-31T15:39:32.402676853-05:00 stdout F "messageCode" : "ASMCOMMONS.0070",
2024-07-31T15:39:32.402679923-05:00 stdout F "severity" : "ERROR",
2024-07-31T15:39:32.402682359-05:00 stdout F "category" : "USER_FACING",
2024-07-31T15:39:32.402685349-05:00 stdout F "displayMessage" : "Failed to enforce uploaded license file: The file provided is not a valid license file, or not the correct file for this version.",
2024-07-31T15:39:32.402688057-05:00 stdout F "responseAction" : "Please Contact support.",
Both Gateway pods' logs reported that the correct payload was sent to the PowerFlex cluster, but the command failed to run.
Below is an example of the output from the Gateway-0 pod logs.
...\block-legacy-gateway-0\block-legacy-gateway.stdout.log
2024-07-31T15:39:32.884634817-05:00 stdout F 20:39:32.884 [|https-jsse-nio-443-exec-2] INFO c.e.s.s.d.i.activemq.ActiveMqService - publishing event Event{code=20210008, name=COMMAND_FAILED, description=Legacy GW: command POST /api/instances/System/action/updateLicense has failed, severity=INFORMATION, category=AUDIT, details={command_return_value=Wrong command parameters. Check the PowerFlex user documentation for this command to see the correct parameters., command_payload={"installationId":"<id>","softwareId":"<sw_id>","capacityInBytes":"1544813837025280","activationEpoch":"1722458317","featureInfoList":[{"featureCode":"CapacityFeature","expirationDays":"-1"},{"featureCode":"ObfuscationFeature","expirationDays":"-1"},{"featureCode":"SnapshotsFeature","expirationDays":"-1"},{"featureCode":"QosFeature","expirationDays":"-1"},{"featureCode":"ReplicationFeature","expirationDays":"-3"}]}, system-id=<system_id>, command_name=POST /api/instances/System/action/updateLicense, command_return_code=62}, isInternal=false, domain=MANAGEMENT, id=2885fa0b172d6723, timestamp=Wed Jul 31 20:39:32 UTC 2024, resourceType=BLOCK_API_GATEWAY, resourceName=Block Lifecycle Management and Serviceability, resourceId=0x0, serviceName=block-legacy-gw, serviceVersion=null, serviceInstanceId=null, originatingApplicationName=null, requestId=null, relatedEvents=null, jobId=null, trace_parent=00-10375919ceaf5cb7312345577b6ebd2b-8706bc0277a41fea-01, trace_state=block-legacy-gw=e171ceb85c8458e4,pfx-ingress=8706bc0277a41fea, sourceIp=<IP_REMOVED_FOR_KB>, userId=asm-deployer-keycloak-user}
The chronyc sources -v command reports that the NTP server as unusable, indicated by the '?' symbol in the output. This means that the server is not reliable or cannot be used for time synchronization:
chronyc sources -v .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current best, '+' = combined, '-' = not combined, | / 'x' = may be in error, '~' = too variable, '?' = unusable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^? <IP_REMOVED_FOR_KB> 1 10 377 975 -901ms[ -901ms] +/- 10.2s
The chronyc tracking command output shows that the system's leap status is Not synchronized. This indicates that the system's clock is not synchronized with any NTP server:
chronyc tracking Reference ID : 00000000 () Stratum : 0 Ref time (UTC) : Thu Jan 01 00:00:00 1970 System time : 0.000000000 seconds fast of NTP time Last offset : +0.000000000 seconds RMS offset : 0.000000000 seconds Frequency : 0.000 ppm slow Residual freq : +0.000 ppm Skew : 0.000 ppm Root delay : 1.000000000 seconds Root dispersion : 1.000000000 seconds Update interval : 0.0 seconds Leap status : Not synchronised
Impact
Unable to add the PowerFlex license.
Cause
chronyc utility despite it being configured. The issue appeared to stem from their internal NTP server. PowerFlex depends on accurate time synchronization for PowerFlex Manager Platform certificate validation, and it requires the Manager MDMs to be synchronized with the PFMP (MVM) nodes.Resolution
Ensure that the system has accurate time synchronization on the Manager MDMs and MVM nodes before applying the PowerFlex license by running the following commands:
chronyc tracking- This command checks the overall synchronization status of the system. A leap status of Normal indicates that the system clock is synchronized and there are no issues with the timekeeping.
chronyc tracking Reference ID : 0E0E0E12 ( 30.30.30.2) Stratum : 11 Ref time (UTC) : Mon Aug 12 20:41:25 2024 System time : 0.000000200 seconds slow of NTP time Last offset : -0.000001402 seconds RMS offset : 0.000014281 seconds Frequency : 86.862 ppm slow Residual freq : -0.000 ppm Skew : 0.026 ppm Root delay : 0.000198145 seconds Root dispersion : 0.000033342 seconds Update interval : 64.4 seconds Leap status : Normal
chronyc sources -v- This command provides details about the NTP servers being used and their status. Having the ^ symbol confirms that the system is using an external NTP server for time synchronization.
chronyc sources -v .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current best, '+' = combined, '-' = not combined, | / 'x' = may be in error, '~' = too variable, '?' = unusable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 30.30.30.2 10 6 377 33 -2137ns[-3539ns] +/- 103us