Index: trunk/resources/data/validator/combinations.mapcss
===================================================================
--- trunk/resources/data/validator/combinations.mapcss	(revision 19570)
+++ trunk/resources/data/validator/combinations.mapcss	(revision 19590)
@@ -149,5 +149,4 @@
 /* {0.key} without {1.tag} or {2.tag} */
 *[bridge:movable               ][bridge!=movable][man_made!=bridge],
-*[substation                   ][power!=substation][pipeline!=substation],
 *[reservoir_type               ][landuse!=reservoir][water!=reservoir],
 way[waterway=pressurised       ][tunnel!=flooded][man_made!=pipeline] {
@@ -156,7 +155,8 @@
 }
 
-/* {0.key} without {1.tag}, {2.tag} or {3.tag}, #15107, #20241 */
+/* {0.key} without {1.tag}, {2.tag} or {3.tag}, #15107, #20241, #20421 */
 *[iata                         ][aeroway!=aerodrome][aeroway!=heliport][aeroway!=helipad],
-*[icao                         ][aeroway!=aerodrome][aeroway!=heliport][aeroway!=helipad] {
+*[icao                         ][aeroway!=aerodrome][aeroway!=heliport][aeroway!=helipad],
+*[substation                   ][power!=substation][power!~/pole|tower/][pipeline!=substation] {
   throwWarning: tr("{0} without {1}, {2} or {3}", "{0.key}", "{1.tag}", "{2.tag}", "{3.tag}");
   group: tr("missing tag");
@@ -1057,4 +1057,12 @@
 }
 
+/* #20421 */
+*[substation][transformer=distribution] {
+  throwWarning: tr("{0} together with {1}", "{1.tag}", "{0.key}");
+  suggestAlternative: "transformer=main";
+  group: tr("suspicious tag combination");
+  fixAdd: "transformer=main"
+}
+
 /* #21836 */
 *[voltage:primary][voltage:secondary][transformer=generator][tag("voltage:secondary")<tag("voltage:primary")] {
Index: trunk/resources/data/validator/deprecated.mapcss
===================================================================
--- trunk/resources/data/validator/deprecated.mapcss	(revision 19570)
+++ trunk/resources/data/validator/deprecated.mapcss	(revision 19590)
@@ -2333,4 +2333,27 @@
 }
 
+/* #20421 */
+*[transformer=minor_distribution] {
+  throwWarning: tr("{0} is deprecated", "{1.tag}");
+  suggestAlternative: "transformer=distribution";
+  group: tr("deprecated tagging");
+  fixAdd: "transformer=distribution";
+}
+
+*[transformer=traction] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: "transformer=main";
+  group: tr("deprecated tagging");
+  fixAdd: "transformer=main";
+}
+
+*[transformer=auto] {
+  throwWarning: tr("{0} is deprecated", "{0.tag}");
+  suggestAlternative: "transformer=* + windings:auto=yes";
+  group: tr("deprecated tagging");
+  fixRemove: "transformer";
+  fixAdd: "windings:auto=yes";
+}
+
 /* #20434 */
 *[building:roof:shape] {
Index: trunk/resources/data/validator/geometry.mapcss
===================================================================
--- trunk/resources/data/validator/geometry.mapcss	(revision 19570)
+++ trunk/resources/data/validator/geometry.mapcss	(revision 19590)
@@ -430,4 +430,11 @@
 }
 
+/* 20421 */
+area[power=substation] ⊇ *[transformer=distribution] {
+  throwWarning: tr("A distribution transformer shouldn't be contained in a substation.");
+  suggestAlternative: "transformer=main";
+  fixAdd: "transformer=main";
+}
+
 /* #21801 */
 way[railway][railway !~ /^(turntable|traverser|platform_edge|roundhouse|workshop|platform)$/] > node[/railway$/ !~ /^(switch|railway_crossing)$/][count(parent_osm_primitives("railway")) > 2]:connection,
