Dear Pietro,
in order to force the transverse rule I use a command like this
FirstDummies[tens_][bigexpr_] := bigexpr //.
PD[i_]@PD[j_][expr_] /; (! FreeQ[expr, tens[___, ChangeIndex[i], ___]] && FreeQ[expr, tens[___, ChangeIndex[j], ___]]) :> PD[j]@PD[i][expr];
Basically it change the order of the derivatives (I use PD for my problems) if the external index is contracted with some index of tens.
At the end you have just to defiune one rule
htt/:CD[-a_]@htt[a_,__]:=0;
and then apply the command (it doesn't matter how many derivatives you have).
The only problem is that you have to call it for every transverse tensor you have. For me it would be great to have something that acts on every object defined.. (if you find a way to improve this, please tell me.. :))
Best,
Emilio