I wrote some quite general solution, that uses built in functions for coordinate transforming. I hope that it will be helpful.
\[ScriptCapitalD]Transform[expr_,$\[ScriptCapitalD]Functions_,$\[ScriptCapitalD]Variables_,$\[ScriptCapitalD]NewVariables_,system1_->system2_,assumptions_:True]:=
Module[{inner,\[ScriptCapitalD]},
\[ScriptCapitalD][sym_/;MemberQ[$\[ScriptCapitalD]Functions,sym],var_/;MemberQ[$\[ScriptCapitalD]Variables,var]]:=Sum[\[ScriptCapitalD][sym,{inner}]\[ScriptCapitalD][inner,{var}],{inner,$\[ScriptCapitalD]NewVariables}];
\[ScriptCapitalD][expr1_+expr2_,var_]:=\[ScriptCapitalD][expr1,var]+\[ScriptCapitalD][expr2,var];
\[ScriptCapitalD][\[ScriptCapitalD][vars1__]\[ScriptCapitalD][vars2__],var_]:=\[ScriptCapitalD][\[ScriptCapitalD][vars1],var]\[ScriptCapitalD][vars2]+\[ScriptCapitalD][vars1]\[ScriptCapitalD][\[ScriptCapitalD][vars2],var];
\[ScriptCapitalD][\[ScriptCapitalD][sym_/;MemberQ[$\[ScriptCapitalD]Functions,sym],var1_List],var2_]:=Sum[\[ScriptCapitalD][sym,Sort[var1~Join~{inner}]]\[ScriptCapitalD][inner,{var2}],{inner,$\[ScriptCapitalD]NewVariables}];
\[ScriptCapitalD][\[ScriptCapitalD][sym_/;MemberQ[$\[ScriptCapitalD]NewVariables,sym],var1_List],var2_]:=\[ScriptCapitalD][sym,Sort[var1~Join~{var2}]];
\[ScriptCapitalD][Derivative[ders__][f_][vars__]]:=Fold[\[ScriptCapitalD][#1,#2]&,f,Flatten[MapThread[Table[#1,{#2}]&,{{vars},{ders}}]]];
\[ScriptCapitalD][someExpr_]:=someExpr/.Derivative[ders__][f_][vars__]:>\[ScriptCapitalD][Derivative[ders][f][vars]];
coordinateTransformRules=Thread[$\[ScriptCapitalD]NewVariables->CoordinateTransform[ system1->system2,$\[ScriptCapitalD]Variables]];
inverseCoordinateTransformRules=Thread[$\[ScriptCapitalD]Variables->CoordinateTransform[ system2->system1,$\[ScriptCapitalD]NewVariables]];
\[ScriptCapitalD]InverseRules={HoldPattern[\[ScriptCapitalD][sym_/;MemberQ[$\[ScriptCapitalD]NewVariables,sym],vars_]]:>With[{function=sym/.coordinateTransformRules},D[function,Sequence@@vars]],
HoldPattern[\[ScriptCapitalD][sym_/;MemberQ[$\[ScriptCapitalD]Functions,sym],vars_]]:>D[sym@@$\[ScriptCapitalD]NewVariables,Sequence@@vars]};
FullSimplify[Expand[\[ScriptCapitalD][expr]]/.\[ScriptCapitalD]InverseRules/.inverseCoordinateTransformRules,assumptions]]
Some examples:
\[ScriptCapitalD]Transform[D[u[x, y], x, x] + D[u[x, y], y, y], {u}, {x, y}, {r, \[Phi]}, "Cartesian" -> "Polar", {r > 0, 0 < \[Phi] < 2 Pi}]
\[ScriptCapitalD]Transform[D[u[x, y, z], x, x] + D[u[x, y, z], y, y] + D[u[x, y, z], z, z], {u}, {x, y, z}, {r, \[Theta], \[Phi]}, "Cartesian" -> "Spherical", {r > 0, 0 < \[Theta] < Pi, -Pi < \[Phi] < Pi}]
\[ScriptCapitalD]Transform[D[T[A, B], A] + 2 D[T[A, B], A, B] + 1/x D[T[A, B], B, B], {T}, {A, B}, {\[CapitalPsi], \[CapitalOmega]}, "Cartesian" -> "PlanarParabolic", {\[CapitalPsi] \[Element] Reals, 0 <= \[CapitalOmega], (\[CapitalPsi] != 0 || \[CapitalOmega] != 0)}]