Index: src/org/openstreetmap/josm/data/validation/OsmValidator.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 16284)
+++ src/org/openstreetmap/josm/data/validation/OsmValidator.java	(working copy)
@@ -234,8 +234,15 @@
             } catch (SecurityException e) {
                 Logging.log(Logging.LEVEL_ERROR, "Unable to load ignored errors", e);
             }
-            // see #19053: remove invalid entry
-            ignoredErrors.remove("3000");
+            // see #19053:
+            String legacyEntry = ignoredErrors.remove("3000");
+            if (legacyEntry != null) {
+                if (!legacyEntry.isEmpty()) {
+                    addIgnoredError("3000_" + legacyEntry, legacyEntry);
+                }
+                saveIgnoredErrors();
+            }
+
         }
     }
 
Index: src/org/openstreetmap/josm/data/validation/TestError.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/TestError.java	(revision 16284)
+++ src/org/openstreetmap/josm/data/validation/TestError.java	(working copy)
@@ -338,6 +338,10 @@
      * @return The ignore sub group
      */
     public String getIgnoreSubGroup() {
+        if (code == 3000 && descriptionEn != null) {
+            // see #19053
+            return "3000_" + descriptionEn;
+        }
         String ignorestring = getIgnoreGroup();
         if (descriptionEn != null) {
             ignorestring += '_' + descriptionEn;
@@ -351,6 +355,10 @@
      * @see TestError#getIgnoreSubGroup()
      */
     public String getIgnoreGroup() {
+        if (code == 3000 && descriptionEn != null) {
+            // see #19053
+            return "3000_" + getMessage();
+        }
         return Integer.toString(code);
     }
 
@@ -524,4 +532,5 @@
     public String toString() {
         return "TestError [tester=" + tester + ", code=" + code + ", message=" + message + ']';
     }
+
 }
Index: src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 16284)
+++ src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(working copy)
@@ -410,9 +410,7 @@
 
         lastSelectedNode = node;
         if (node != null) {
-            final Set<String> codes = new HashSet<>();
             ValidatorTreePanel.visitTestErrors(node, error -> {
-                codes.add(error.getIgnoreSubGroup()); // see #19053
                 error.setSelected(true);
 
                 hasFixes.set(hasFixes.get() || error.isFixable());
@@ -424,7 +422,7 @@
             });
             selectAction.setEnabled(true);
             if (ignoreAction != null) {
-                ignoreAction.setEnabled(!(node.getUserObject() instanceof Severity) && codes.size() <= 1);
+                ignoreAction.setEnabled(!(node.getUserObject() instanceof Severity));
             }
         }
 
