diff --git a/src/lib66/sanitize/sanitize_source.c b/src/lib66/sanitize/sanitize_source.c
index c30a327942a1d05fb432ca2ad9dcdac916a6cfc8..ead5f1c067143944562c7d109c8f1f90b25361c9 100644
--- a/src/lib66/sanitize/sanitize_source.c
+++ b/src/lib66/sanitize/sanitize_source.c
@@ -29,7 +29,8 @@ void sanitize_source(char const *name, ssexec_t *info)
 {
     log_flow() ;
 
-    int r, logname = get_rstrlen_until(name,SS_LOG_SUFFIX) ;
+    int r ;
+    ssize_t logname = get_rstrlen_until(name,SS_LOG_SUFFIX) ;
     char atree[SS_MAX_TREENAME + 1] ;
 
     r = service_is_g(atree, name, STATE_FLAGS_ISPARSED) ;
diff --git a/src/lib66/service/service_graph_build.c b/src/lib66/service/service_graph_build.c
index c593c6e2bc66c7b171a55ecc6b6e668b29f42eae..0b823dda72fcb90762c8eb052a19693b7aca499d 100644
--- a/src/lib66/service/service_graph_build.c
+++ b/src/lib66/service/service_graph_build.c
@@ -67,6 +67,7 @@ void service_graph_build(graph_t *g, resolve_service_t *ares, unsigned int aresl
     log_flow() ;
 
     unsigned int pos = 0 ;
+    ss_state_t ste = STATE_ZERO ;
     resolve_service_t_ref pres = 0 ;
 
     for (; pos < areslen ; pos++) {
@@ -74,6 +75,17 @@ void service_graph_build(graph_t *g, resolve_service_t *ares, unsigned int aresl
         pres = &ares[pos] ;
         char *service = pres->sa.s + pres->name ;
 
+        if (!state_check(&ares[pos]))
+            continue ;
+
+        if (!state_read(&ste, &ares[pos]))
+            continue ;
+
+        if (service_is(&ste, STATE_FLAGS_ISSUPERVISED) == STATE_FLAGS_FALSE && FLAGS_ISSET(flag, STATE_FLAGS_ISSUPERVISED)) {
+            log_warn("service: ", service, " not available -- ignore it") ;
+            continue ;
+        }
+
         if (!graph_vertex_add(g, service))
             log_dieu(LOG_EXIT_SYS, "add vertex: ", service) ;