diff --git a/src/lib66/exec/ssexec_disable.c b/src/lib66/exec/ssexec_disable.c
index 0c07eaa7ccfe33dd701bb94eb843ac337c2eabec..24362dc81c2438b6a729f6946b8532620f17bb91 100644
--- a/src/lib66/exec/ssexec_disable.c
+++ b/src/lib66/exec/ssexec_disable.c
@@ -104,14 +104,14 @@ int ssexec_disable(int argc, char const *const *argv, ssexec_t *info)
 
     for (; n < argc ; n++) {
 
-        name_isvalid(argv[n]) ;
-
         int aresid = service_resolve_array_search(ares, areslen, argv[n]) ;
         if (aresid < 0)
             log_die(LOG_EXIT_USER, "service: ", argv[n], " not available -- did you parse it?") ;
 
         service_enable_disable(&graph, aresid, ares, areslen, 0, visit, propagate) ;
 
+        tree_service_remove(info->base.s, ares[aresid].sa.s + ares[aresid].treename, ares[aresid].sa.s + ares[aresid].name) ;
+
         if (!sastr_add_string(&sa, argv[n]))
             log_dieu(LOG_EXIT_SYS, "add string") ;