diff --git a/gradle.properties b/gradle.properties
index 6e69a119387b179bc044d6f830b3041c159abe31..e3bd62ba98cab5d81577d065d9f31407c7bec50d 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,10 +1,9 @@
-cdmVersion = 5.1.0
 githooksVersion = 1.2.0
 jacksonVersion = 2.9.0
 junitVersion = 5.8.2
 micronautVersion = 3.2.3
 micronautRxVersion = 2.1.1
-netcdfVersion = 5.1.0
+netcdfVersion = 5.5.1
 nodePluginVersion = 3.0.1
 nodeVersion = 16.3.0
 nshmpLibVersion = 0.8.2
diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle
index 5d0bbfcfa842838020e95c04571dd5f92be0e8bb..3a35167eb637aca8feb638a6133808166d0b158c 100644
--- a/gradle/dependencies.gradle
+++ b/gradle/dependencies.gradle
@@ -5,7 +5,7 @@ dependencies {
   implementation "ghsc:nshmp-ws-utils:${nshmpWsUtilsVersion}"
 
   // NetCDF
-  implementation "edu.ucar:cdm:${cdmVersion}"
+  implementation "edu.ucar:cdm-core:${netcdfVersion}"
   implementation "edu.ucar:netcdf4:${netcdfVersion}"
   implementation "org.slf4j:slf4j-jdk14:${slfVersion}"
 
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReader.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReader.java
index 98600bf0d64d6187309f8461d920b2c830ae113b..3def8b52fed351a1efc529ed8b00821ce2a431ea 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReader.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/NshmNetcdfReader.java
@@ -18,7 +18,7 @@ import gov.usgs.earthquake.nshmp.netcdf.reader.NetcdfCoordinates;
 import gov.usgs.earthquake.nshmp.netcdf.reader.StaticHazard;
 import gov.usgs.earthquake.nshmp.netcdf.reader.StaticHazards;
 
-import ucar.nc2.dataset.NetcdfDataset;
+import ucar.nc2.dataset.NetcdfDatasets;
 
 /**
  *
@@ -60,7 +60,7 @@ public class NshmNetcdfReader {
       throw new IllegalArgumentException("Path to Netcdf file [" + path + "] does not exist");
     }
 
-    try (var ncd = NetcdfDataset.openDataset(path.toString())) {
+    try (var ncd = NetcdfDatasets.openDataset(path.toString())) {
       coords = new NetcdfCoordinates(ncd.getRootGroup());
     } catch (IOException e) {
       throw new RuntimeException("Could not read Netcdf file [" + path + " ]");
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazardsReader.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazardsReader.java
index 92088868cdc1a45e5f2cc14bb71364b77e92d44e..7395ffef8d03550faf9654c76f4c3a2938d38d4f 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazardsReader.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/BoundingHazardsReader.java
@@ -14,7 +14,7 @@ import gov.usgs.earthquake.nshmp.netcdf.reader.NetcdfUtils.Key;
 import ucar.ma2.Array;
 import ucar.ma2.DataType;
 import ucar.ma2.InvalidRangeException;
-import ucar.nc2.dataset.NetcdfDataset;
+import ucar.nc2.dataset.NetcdfDatasets;
 
 /**
  * Container for gridded hazard curves at four closest grid points to target
@@ -122,7 +122,7 @@ public class BoundingHazardsReader {
   private BoundingHazards extractHazardsAt(
       int idxLonLL,
       int idxLatLL) {
-    try (NetcdfDataset ncd = NetcdfDataset.openDataset(netcdf.path().toString())) {
+    try (var ncd = NetcdfDatasets.openDataset(netcdf.path().toString())) {
       var boundingHazardMaps = BoundingHazards.builder();
       var targetGroup = ncd.getRootGroup();
 
@@ -140,7 +140,7 @@ public class BoundingHazardsReader {
        * be [0,0,0,0,0] for LL grid point ...and shape of requested array is
        * [nVs,nImt,1,1,nIml]
        */
-      var aHazards = targetGroup.findVariable(Key.HAZARD).read(targetOrigin, targetShape);
+      var aHazards = targetGroup.findVariableLocal(Key.HAZARD).read(targetOrigin, targetShape);
 
       var shape = targetShape.clone();
       shape[2] = 1;
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfCoordinates.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfCoordinates.java
index 3ca684e889792cbbc7d46cd4ca257d6ffbf369c2..149586ac0495d7557d4c34e79e11de662c42d654 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfCoordinates.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfCoordinates.java
@@ -44,10 +44,10 @@ public class NetcdfCoordinates {
     // variables and their dimensions should be, this is OK(???)
     // TODO: probably better (proper) to access netCDF dimensions
 
-    var vSiteClass = targetGroup.findVariable(Key.SITE_CLASS);
-    var vImls = targetGroup.findVariable(Key.IMLS);
-    var vImts = targetGroup.findVariable(Key.IMT);
-    var vBounds = targetGroup.findVariable(Key.BOUNDS);
+    var vSiteClass = targetGroup.findVariableLocal(Key.SITE_CLASS);
+    var vImls = targetGroup.findVariableLocal(Key.IMLS);
+    var vImts = targetGroup.findVariableLocal(Key.IMT);
+    var vBounds = targetGroup.findVariableLocal(Key.BOUNDS);
 
     var vs30s = NetcdfUtils.getDoubleArray(targetGroup, Key.VS30);
     var lats = NetcdfUtils.getDoubleArray(targetGroup, Key.LAT);
diff --git a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtils.java b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtils.java
index f1c2e7737de5ee7da705d6afc4fcba3dd933bd40..26fd2e408336fd3cd1e85eb82cdc5577fc138a9f 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtils.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/netcdf/reader/NetcdfUtils.java
@@ -93,7 +93,7 @@ public class NetcdfUtils {
    * @throws IOException
    */
   static Object get1DArray(Group group, String key, DataType dataType) throws IOException {
-    var var = group.findVariable(key);
+    var var = group.findVariableLocal(key);
     checkNotNull(
         var,
         String.format("Could not find variable [%s] in group [%s]", key, group.getFullName()));