diff --git a/src/main/java/com/googlesource/gerrit/plugins/depends/on/ChangeMessageStore.java b/src/main/java/com/googlesource/gerrit/plugins/depends/on/ChangeMessageStore.java
index c7fa832..6633132 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/depends/on/ChangeMessageStore.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/depends/on/ChangeMessageStore.java
@@ -134,10 +134,9 @@
 
   /** If needed, create a comment on the change with a DependsOn for the dependencies. */
   @Override
-  public boolean resolveDependencies(PatchSet.Id patchSetId, Set<Set<BranchNameKey>> deliverables)
+  public boolean resolveDependencies(ChangeNotes changeNotes, Set<Set<BranchNameKey>> deliverables)
       throws InvalidChangeOperationException, StorageException {
-    Change.Id cid = patchSetId.changeId();
-    Set<DependsOn> deps = load(cid);
+    Set<DependsOn> deps = load(changeNotes);
     if (Resolver.isResolved(deps)) {
       return false;
     }
@@ -146,22 +145,25 @@
       return false; // Nothing resolved this pass
     }
     // ToDo: add info about the resolved depends-on (deliverable, branch, and ChangeId?)
-    store(patchSetId, resolved, "Auto-updating resolved Depends-on");
+    store(changeNotes, resolved, "Auto-updating resolved Depends-on");
     return true;
   }
 
+  /** If needed, create a comment on the change with a DependsOn for the dependencies. */
+  @Deprecated
+  @Override
+  public boolean resolveDependencies(PatchSet.Id patchSetId, Set<Set<BranchNameKey>> deliverables)
+      throws InvalidChangeOperationException, StorageException {
+    return resolveDependencies(
+        changeNotesFactory.createCheckedUsingIndexLookup(patchSetId.changeId()), deliverables);
+  }
+
   @Override
   public boolean hasUnresolvedDependsOn(Change.Id changeId) {
     return !Resolver.isResolved(load(changeId));
   }
 
   /** Create a comment on the change with a DependsOn for the deps. */
-  public void store(PatchSet.Id patchSetId, Set<DependsOn> deps, String message)
-      throws InvalidChangeOperationException, StorageException {
-    store(changeNotesFactory.createCheckedUsingIndexLookup(patchSetId.changeId()), deps, message);
-  }
-
-  /** Create a comment on the change with a DependsOn for the deps. */
   public void store(ChangeNotes changeNotes, Set<DependsOn> deps, String message)
       throws InvalidChangeOperationException, StorageException {
     StringBuilder comment = new StringBuilder();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/depends/on/Module.java b/src/main/java/com/googlesource/gerrit/plugins/depends/on/Module.java
index 2b40b88..0ac50e2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/depends/on/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/depends/on/Module.java
@@ -26,6 +26,7 @@
 import com.google.gerrit.server.DynamicOptions.DynamicBean;
 import com.google.gerrit.server.change.ChangePluginDefinedInfoFactory;
 import com.google.gerrit.server.events.EventListener;
+import com.google.gerrit.server.notedb.ChangeNotes;
 import com.google.gerrit.server.project.InvalidChangeOperationException;
 import com.google.gerrit.server.project.NoSuchChangeException;
 import com.google.gerrit.server.query.change.ChangeQueryBuilder.ChangeHasOperandFactory;
@@ -79,6 +80,14 @@
     }
 
     @Override
+    public boolean resolveDependencies(
+        ChangeNotes changeNotes, Set<Set<BranchNameKey>> deliverables)
+        throws InvalidChangeOperationException {
+      return changeMessageStore.resolveDependencies(changeNotes, deliverables);
+    }
+
+    @Deprecated
+    @Override
     public boolean resolveDependencies(PatchSet.Id patchSetId, Set<Set<BranchNameKey>> deliverables)
         throws InvalidChangeOperationException, StorageException, NoSuchChangeException {
       return changeMessageStore.resolveDependencies(patchSetId, deliverables);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/depends/on/extensions/DependencyResolver.java b/src/main/java/com/googlesource/gerrit/plugins/depends/on/extensions/DependencyResolver.java
index bf92899..3cde2eb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/depends/on/extensions/DependencyResolver.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/depends/on/extensions/DependencyResolver.java
@@ -19,12 +19,17 @@
 import com.google.gerrit.entities.PatchSet;
 import com.google.gerrit.exceptions.StorageException;
 import com.google.gerrit.server.DynamicOptions.DynamicBean;
+import com.google.gerrit.server.notedb.ChangeNotes;
 import com.google.gerrit.server.project.InvalidChangeOperationException;
 import java.util.Set;
 
 public interface DependencyResolver extends DynamicBean {
-  public boolean resolveDependencies(PatchSet.Id patchSetId, Set<Set<BranchNameKey>> deliverables)
+  boolean resolveDependencies(ChangeNotes changeNotes, Set<Set<BranchNameKey>> deliverables)
       throws InvalidChangeOperationException, StorageException;
 
-  public boolean hasUnresolvedDependsOn(Change.Id changeId) throws StorageException;
+  @Deprecated
+  boolean resolveDependencies(PatchSet.Id patchSetId, Set<Set<BranchNameKey>> deliverables)
+      throws InvalidChangeOperationException, StorageException;
+
+  boolean hasUnresolvedDependsOn(Change.Id changeId) throws StorageException;
 }
