diff --git a/Makefile b/Makefile
index eb603f88a8c08afa98678fbee11ca7a84020eb41..79a2434ea887852ce99fa74815bde16e764325a3 100644
--- a/Makefile
+++ b/Makefile
@@ -180,7 +180,7 @@ man: $(ALL_MAN:%.scd=%)
 install-man:
 	for i in 1 5 8 ; do \
 		install -m755 -d $(DESTDIR)$(mandir)/man$$i; \
-		install -m644 man/*.$$i $(DESTDIR)$(mandir)/man$$i/ ; \
+		install -m644 doc/man/*.$$i $(DESTDIR)$(mandir)/man$$i/ ; \
 	done
 
 .PHONY: it all clean distclean tgz strip install install-dynlib install-bin install-lib install-include man install-man
diff --git a/configure b/configure
index 9af5b6d2a9dbc46192dd548195e55606236950ce..cac4304c598e73b72f51cf3d0f7dc86f0cacd790 100755
--- a/configure
+++ b/configure
@@ -9,61 +9,65 @@ Usage: $0 [OPTION]... [TARGET]
 Defaults for the options are specified in brackets.
 
 System types:
-  --target=TARGET                 configure to run on target TARGET [detected]
-  --host=TARGET                   same as --target
+  --target=TARGET                  configure to run on target TARGET [detected]
+  --host=TARGET                    same as --target
 
 Installation directories:
-  --prefix=PREFIX                 main installation prefix [/]
-  --exec-prefix=EPREFIX           installation prefix for executable files [PREFIX]
+  --prefix=PREFIX                  main installation prefix [/]
+  --exec-prefix=EPREFIX            installation prefix for executable files [PREFIX]
 
 Fine tuning of the installation directories:
-  --dynlibdir=DIR                 shared library files [PREFIX/lib]
-  --bindir=BINDIR                 user executables [EPREFIX/bin]
-  --libexecdir=DIR                package-scoped executables [EPREFIX/libexec]
-  --libdir=DIR                    static library files [PREFIX/lib/$package]
-  --includedir=DIR                C header files [PREFIX/include]
-  --sysconfdir=SYSDIR             global configuration files [/etc/66]
-  --datarootdir=DATAROOTDIR       read-only architecture-independent data root [PREFIX/share]
-  --mandir=DIR                    man documentation [$datarootdir/man]
+  --dynlibdir=DIR                  shared library files [PREFIX/lib]
+  --bindir=BINDIR                  user executables [EPREFIX/bin]
+  --libexecdir=DIR                 package-scoped executables [EPREFIX/libexec]
+  --libdir=DIR                     static library files [PREFIX/lib/$package]
+  --includedir=DIR                 C header files [PREFIX/include]
+  --sysconfdir=SYSDIR              global configuration files [/etc/66]
+  --datarootdir=DATAROOTDIR        read-only architecture-independent data root [PREFIX/share]
+  --mandir=DIR                     man documentation [$datarootdir/man]
+  
+  --shebangdir=DIR                 absolute path for execline #\! invocations [BINDIR]
+  --livedir=DIR                    default live directory [/run/66]
+  --with-system-log=DIR            system service log directory[/var/log/66]
+    
+  --with-system-dir=DIR            66 tools system working directory[PREFIX/lib/66]
+  --with-system-service=DIR        system service frontend directory[DATAROOTDIR/66/service]
+  --with-system-service-conf=DIR   system service configuration file directory[SYSDIR/conf/system]
+  
+  --with-sysadmin-service=DIR      sysadmin service frontend directory[SYSDIR/service]
+  --with-sysadmin-service-conf=DIR sysadmin service configuration file directory[SYSDIR/conf/sysadmin]
+  
+  --with-user-dir=DIR              66 tools user working directory[.66]
+  --with-user-log=DIR              user service log directory[.66/log]
+  --with-user-service=DIR          user service directory[.66/service]
+  --with-user-service-conf=DIR     user service configuration directory[.66/conf]
   
-  --shebangdir=DIR                absolute path for execline #\! invocations [BINDIR]
-  --livedir=DIR                   default live directory [/run/66]
-  --with-system-dir=DIR           66 tools root working directory[PREFIX/lib/66]
-  --with-packager-service=DIR     packager service installation directory[DATAROOTDIR/66/service]
-  --with-sys-service=DIR          sysadmin service directory[SYSDIR/sysadmin/service]
-  --with-sys-service-conf=DIR     sysadmin service configuration directory[SYSDIR/conf]
-  --with-system-log=DIR           root service log directory[/var/log/66]
-  --with-user-dir=DIR             66 tools user working directory[.66]
-  --with-user-log=DIR             user service log directory[.66/log]
-  --with-user-service=DIR         user service directory[.66/service]
-  --with-user-service-conf=DIR    user service configuration directory[.66/conf]
- 
  Do not set an absolute path but a \$HOME relative path for --with-user-dir,  
  --with-user-log, --with-user-service, --with-user-service-conf. The \$HOME prefix 
  will be appened at the pathname automatically in function of the user.
  For example , by default the final path for --with-user-dir will be \$HOME/.66.
  
- --with-packager-service and --with-sys-service directory must be two differents path.
- For example do not set --with-sys-service=/etc/66/service/sysadmin with packager service   
- --with-sys-service=/etc/66/service.
+ --with-system-service and --with-sysadmin-service directory must be two differents path.
+ For example do not set --with-sysadmin-service=/etc/66/service/sysadmin with system service   
+ --with-system-service=/etc/66/service.
  
  If no --prefix option is given, by default --with-system-dir will be /var/lib/66.
 
 Dependencies:
-  --with-sysdeps=DIR            use sysdeps in DIR [PREFIX/lib/skalibs/sysdeps]
-  --with-include=DIR             add DIR to the list of searched directories for headers
-  --with-lib=DIR                 add DIR to the list of searched directories for static libraries
-  --with-dynlib=DIR              add DIR to the list of searched directories for shared libraries
+  --with-sysdeps=DIR               use sysdeps in DIR [PREFIX/lib/skalibs/sysdeps]
+  --with-include=DIR               add DIR to the list of searched directories for headers
+  --with-lib=DIR                   add DIR to the list of searched directories for static libraries
+  --with-dynlib=DIR                add DIR to the list of searched directories for shared libraries
  
 Optional features:
-  --enable-shared                build shared libraries [disabled]
-  --disable-static               do not build static libraries [enabled]
-  --disable-allstatic            do not prefer linking against static libraries [enabled]
-  --enable-static-libc           make entirely static binaries [disabled]
-  --disable-all-pic              do not build static libraries as PIC [enabled]
-  --enable-slashpackage[=ROOT]   assume /package installation at ROOT [disabled]
-  --enable-absolute-paths        do not rely on PATH to access this package's binaries,
-                                 hardcode absolute BINDIR/foobar paths instead [disabled]
+  --enable-shared                  build shared libraries [disabled]
+  --disable-static                 do not build static libraries [enabled]
+  --disable-allstatic              do not prefer linking against static libraries [enabled]
+  --enable-static-libc             make entirely static binaries [disabled]
+  --disable-all-pic                do not build static libraries as PIC [enabled]
+  --enable-slashpackage[=ROOT]     assume /package installation at ROOT [disabled]
+  --enable-absolute-paths          do not rely on PATH to access this package's binaries,
+                                   hardcode absolute BINDIR/foobar paths instead [disabled]
 EOF
 exit 0
 }
@@ -164,14 +168,15 @@ mandir='$datarootdir/man'
 shebangdir='$bindir'
 livedir='/run/66'
 system_dir='$prefix/lib/66'
-user_dir='.66'
 system_log='/var/log/66'
-user_log='.66/log'
-service_packager='$datarootdir/66/service'
-service_sys='$sysconfdir/sysadmin/service'
+service_system='$datarootdir/66/service'
+service_systemconf='$sysconfdir/conf/system'
+service_adm='$sysconfdir/service'
+service_admconf='$sysconfdir/conf/sysadmin'
+user_dir='.66'
 service_user='.66/service'
-service_sysconf='$sysconfdir/conf'
 service_userconf='.66/conf'
+user_log='.66/log'
 sysdeps='$prefix/lib/skalibs/sysdeps'
 manualsysdeps=false
 shared=false
@@ -208,14 +213,15 @@ for arg ; do
     --shebangdir=*) shebangisdefault=false ; shebangdir=${arg#*=} ;;
     --livedir=*) livedir=${arg#*=} ;;
     --with-system-dir=*) system_dir=${arg#*=} ;;
-    --with-user-dir=*) user_dir=${arg#*=} ;;
     --with-system-log=*) system_log=${arg#*=} ;;
-    --with-user-log=*) user_log=${arg#*=} ;;
-    --with-packager-service=*) service_packager=${arg#*=} ;;
-    --with-sys-service=*) service_sys=${arg#*=} ;;
+    --with-system-service=*) service_system=${arg#*=} ;;
+    --with-system-service-conf=*) service_systemconf=${arg#*=} ;;
+    --with-sysadmin-service=*) service_adm=${arg#*=} ;;
+    --with-sysadmin-service-conf=*) service_admconf=${arg#*=} ;;
+    --with-user-dir=*) user_dir=${arg#*=} ;;
     --with-user-service=*) service_user=${arg#*=} ;;
-    --with-sys-service-conf=*) service_sysconf=${arg#*=} ;;
     --with-user-service-conf=*) service_userconf=${arg#*=} ;;
+    --with-user-log=*) user_log=${arg#*=} ;;
     --with-sysdeps=*) sysdeps=${arg#*=} manualsysdeps=true ;;
     --with-include=*) var=${arg#*=} ; stripdir var ; addincpath="$addincpath -I$var" ;;
     --with-lib=*) var=${arg#*=} ; stripdir var ; addlibspath="$addlibspath -L$var" ; vpaths="$vpaths $var" ;;
@@ -252,24 +258,36 @@ if test -z "$prefix" ; then
   if test "$includedir" = '$prefix/include' ; then
     includedir=/usr/include
   fi
-  if test "$datarootdir" = '$prefix/share'; then
+  if test "$sysdeps" = '$prefix/lib/skalibs/sysdeps' ; then
+    sysdeps=/usr/lib/skalibs/sysdeps
+  fi
+   if test "$datarootdir" = '$prefix/share'; then
     datarootdir=/usr/share
   fi
-  if test "$mandir" = '$datarootdir/man'; then
-    mandir=$datarootdir/man
+ if test "$system_dir" = '$prefix/lib/66' ; then
+	system_dir=/var/lib/66
   fi
-  if test "$service_packager" = '$datarootdir/service' ; then
-	service_packager = '$datarootdir/66/service'
+ # if test "$mandir" = '$datarootdir/man'; then
+ #   mandir=$datarootdir/man
+ # fi
+ # if test "$service_system" = '$datarootdir/service' ; then
+ #	service_system = '$datarootdir/66/service'
+ # fi
+fi
+
+# Add /etc/66 in the default case
+if test -z "$sysconfdir" ; then
+  if test "$service_systemconf" = '$sysconfdir/conf/system' ; then
+	service_systemconf = '$sysconfdir/conf/system'
   fi
-  if test "$system_dir" = '$prefix/lib/66' ; then
-	system_dir=/var/lib/66
+  if test "$service_adm" = '$sysconfdir/service' ; then
+	service_adm = '$sysconfdir/service'
   fi
-  if test "$sysdeps" = '$prefix/lib/skalibs/sysdeps' ; then
-    sysdeps=/usr/lib/skalibs/sysdeps
+  if test "$service_admconf" = '$sysconfdir/conf/sysadmin' ; then
+	service_admconf = '$sysconfdir/conf/sysadmin'
   fi
 fi
 
-
 # Expand installation directories
 stripdir prefix
 for i in exec_prefix dynlibdir libexecdir bindir libdir includedir shebangdir sproot sysdeps system_dir; do
@@ -279,14 +297,14 @@ for i in exec_prefix dynlibdir libexecdir bindir libdir includedir shebangdir sp
 done
 
 stripdir datarootdir
-for i in service_packager mandir; do
+for i in service_system mandir; do
   eval tmp=\${$i}
   eval $i=$tmp
   stripdir $i
 done
 
 stripdir sysconfdir
-for i in service_sys service_user service_sysconf; do
+for i in service_systemconf service_adm service_admconf; do
   eval tmp=\${$i}
   eval $i=$tmp
   stripdir $i
@@ -323,7 +341,7 @@ if $slashpackage ; then
   includedir=${home}/include
   sysconfdir=${home}/etc/66
   datarootdir=${home}/usr/share
-  service_packager=${home}/${datarootdir}/66/service
+  service_system=${home}/${datarootdir}/66/service
   if $shebangisdefault ; then
     shebangdir=${extbinprefix}
   fi
@@ -470,14 +488,15 @@ datarootdir := $datarootdir
 mandir := $mandir
 livedir := $livedir
 system_dir := $system_dir
-user_dir := $user_dir
 system_log := $system_log
-user_log := $user_log
-service_packager := $service_packager
-service_sys := $service_sys
+service_system := $service_system
+service_systemconf := $service_systemconf
+service_adm := $service_adm
+service_admconf := $service_admconf
+user_dir := $user_dir
 service_user := $service_user
-service_sysconf := $service_sysconf
 service_userconf := $service_userconf
+user_log := $user_log
 sysdeps := $sysdeps
 slashpackage := $slashpackage
 sproot := $sproot
@@ -549,9 +568,10 @@ All rights reserved.*/
 #define ${package_macro_name}_SYSTEM_DIR "$system_dir/"
 #define ${package_macro_name}_DATA_SYSDIR "$sysconfdir/"
 #define ${package_macro_name}_LOGGER_SYSDIR "$system_log/"
-#define ${package_macro_name}_SERVICE_PACKDIR "$service_packager/"
-#define ${package_macro_name}_SERVICE_SYSDIR "$service_sys/"
-#define ${package_macro_name}_SERVICE_SYSCONFDIR "$service_sysconf/"
+#define ${package_macro_name}_SERVICE_SYSDIR "$service_system/"
+#define ${package_macro_name}_SERVICE_SYSCONFDIR "$service_systemconf/"
+#define ${package_macro_name}_SERVICE_ADMDIR "$service_adm/"
+#define ${package_macro_name}_SERVICE_ADMCONFDIR "$service_admconf/"
 
 /** Do not use absolute path but a \$HOME relative path
  * The /home/name_of_user prefix will be automatically added to the pathname */
diff --git a/doc/man/execl-envfile.5.scd b/doc/man/execl-envfile.5.scd
index 091540d425d5c261efe36db1b4d54696a9b9e6b8..b30b285d81a558144fedc3a95c73d3099a2507c3 100644
--- a/doc/man/execl-envfile.5.scd
+++ b/doc/man/execl-envfile.5.scd
@@ -24,7 +24,7 @@ key = value # comment not valid
 
 Empty _value_ is *not* permitted.
 If _val_ begin by a *!* character:
-	_key=*!*value_
+	key=*!*value
 the _key_ will be removed from the environment after the substitution.
 
 # LIMITS
diff --git a/src/66/66-info.c b/src/66/66-info.c
index 1c1c0377685a50b6b14defc001313d2ae74cedf0..9dee6c8ec0772aecf29380931c1928b661eb8eb6 100644
--- a/src/66/66-info.c
+++ b/src/66/66-info.c
@@ -764,7 +764,7 @@ int sv_args(int argc, char const *const *argv,char const *const *envp)
 	/** environment */
 	if(!OWNER)
 	{
-		if (!stralloc_cats(&env,SS_SERVICE_SYSCONFDIR)) goto err ;
+		if (!stralloc_cats(&env,SS_SERVICE_ADMCONFDIR)) goto err ;
 		if (!stralloc_0(&env)) goto err ;
 	}
 	else
diff --git a/src/66/66-tree.c b/src/66/66-tree.c
index 81e405025cdd3f7dfd256a6c500c196d4ef62f30..a0719ea27b221918e9db5218e59493821c1cdf1f 100644
--- a/src/66/66-tree.c
+++ b/src/66/66-tree.c
@@ -120,12 +120,14 @@ int sanitize_tree(stralloc *dstree, char const *base, char const *tree,uid_t own
 		{
 			if (sanitize_extra(SS_LOGGER_SYSDIR) < 0)
 			{ VERBO3 strerr_warnwu2sys("create directory: ",SS_LOGGER_SYSDIR) ; return -1 ; }
-			if (sanitize_extra(SS_SERVICE_PACKDIR) < 0)
-			{ VERBO3 strerr_warnwu2sys("create directory: ",SS_LOGGER_SYSDIR) ; return -1 ; }
 			if (sanitize_extra(SS_SERVICE_SYSDIR) < 0)
-			{ VERBO3 strerr_warnwu2sys("create directory: ",SS_LOGGER_SYSDIR) ; return -1 ; }
+			{ VERBO3 strerr_warnwu2sys("create directory: ",SS_SERVICE_SYSDIR) ; return -1 ; }
 			if (sanitize_extra(SS_SERVICE_SYSCONFDIR) < 0)
-			{ VERBO3 strerr_warnwu2sys("create directory: ",SS_LOGGER_SYSDIR) ; return -1 ; }
+			{ VERBO3 strerr_warnwu2sys("create directory: ",SS_SERVICE_SYSCONFDIR) ; return -1 ; }
+			if (sanitize_extra(SS_SERVICE_ADMDIR) < 0)
+			{ VERBO3 strerr_warnwu2sys("create directory: ",SS_SERVICE_ADMDIR) ; return -1 ; }
+			if (sanitize_extra(SS_SERVICE_ADMCONFDIR) < 0)
+			{ VERBO3 strerr_warnwu2sys("create directory: ",SS_SERVICE_ADMCONFDIR) ; return -1 ; }
 		}
 		else
 		{
diff --git a/src/include/66/environ.h b/src/include/66/environ.h
index 3f442f0894904de68cc7e3e9311701dbb39cbd6d..891c4ce883ffe303bab80b00e87c89db7d5da60e 100644
--- a/src/include/66/environ.h
+++ b/src/include/66/environ.h
@@ -43,4 +43,5 @@ extern int env_substitute(char const *key, char const *val,exlsn_t *info, char c
 extern int env_addkv (const char *key, const char *val, exlsn_t *info) ;
 extern size_t build_env(char const *src,char const *const *envp,char const **newenv, char *tmpenv) ;
 extern int env_get_from_src(stralloc *modifs,char const *src) ;
+extern int env_resolve_conf(stralloc *env, char const *sv,uid_t owner) ;
 #endif
diff --git a/src/include/66/parser.h b/src/include/66/parser.h
index 7402de2e5a2587ac615770ab74005df2b81baef4..4e496ee4282fcb10f7670249fb5fc4ba6372f6a2 100644
--- a/src/include/66/parser.h
+++ b/src/include/66/parser.h
@@ -139,7 +139,8 @@ struct sv_alltype_s
 	uint32_t hiercopy[24] ; //dir/file to copy
 	int signal ;//down-signal file
 	unsigned int pipeline ; //pos in deps
-	stralloc saenv ; //type diuint32, pos in saenv
+	stralloc saenv ; 
+	uint32_t srconf ; //path of the environment file
 } ;
 
 #define SV_EXEC_ZERO \
diff --git a/src/lib66/environ.c b/src/lib66/environ.c
index 66bbe8ad71cd2ba81a5fa17c7f7ea7edcc38a956..0317a58837adce9ae1b99ceee19517227ce66e51 100644
--- a/src/lib66/environ.c
+++ b/src/lib66/environ.c
@@ -13,6 +13,8 @@
  */
  
 #include <stddef.h>
+#include <string.h>
+#include <errno.h>
 //#include <stdio.h>
 
 #include <oblibs/string.h>
@@ -33,6 +35,7 @@
 #include <66/environ.h>
 #include <66/utils.h>
 #include <66/constants.h>
+#include <66/config.h>
 
 #include <execline/execline.h>
 /* @Return 1 on success
@@ -401,3 +404,34 @@ size_t build_env(char const *src,char const *const *envp,char const **newenv, ch
 		stralloc_free(&modifs) ;
 		return 0 ;
 }
+
+int env_resolve_conf(stralloc *env, char const *sv,uid_t owner)
+{
+	int err = errno ;
+	size_t svlen = strlen(sv) ;
+	size_t len = sizeof SS_SERVICE_ADMCONFDIR - 1 ;
+	char e[len + svlen + 1] ;
+	memcpy(e,SS_SERVICE_ADMCONFDIR,len) ;
+	memcpy(e + len,sv,svlen) ;
+	e[len + svlen] = 0 ;
+		
+	if (!owner)
+	{
+		errno = 0 ;
+		if (access(e, F_OK) < 0) 
+			if (errno != ENOENT) return 0 ;
+		if (errno == ENOENT){
+			if (!stralloc_cats(env,SS_SERVICE_SYSCONFDIR)) return 0 ;
+		}
+		else if (!stralloc_cats(env,SS_SERVICE_ADMCONFDIR)) return 0 ;
+	}
+	else
+	{
+		if (!set_ownerhome(env,owner)) return 0 ;
+		if (!stralloc_cats(env,SS_SERVICE_USERCONFDIR)) return 0 ;
+	}	
+	if (!stralloc_0(env)) return 0 ;
+	env->len-- ;
+	errno = err ;
+	return 1 ;
+}
diff --git a/src/lib66/parser_write.c b/src/lib66/parser_write.c
index de21c962ad63c3235da3b5c1de8ff1e176d42b5d..3efbac90eb52353cd7771e46b039a6682d319711 100644
--- a/src/lib66/parser_write.c
+++ b/src/lib66/parser_write.c
@@ -36,6 +36,7 @@
 #include <66/enum.h>
 #include <66/resolve.h>
 #include <66/ssexec.h>
+#include <66/environ.h>
 
 #include <s6/config.h>//S6_BINPREFIX
 #include <execline/config.h>//EXECLINE_BINPREFIX
@@ -762,19 +763,6 @@ int write_exec(sv_alltype *sv, sv_exec *exec,char const *file,char const *dst,in
 	stralloc runuser = STRALLOC_ZERO ;
 	stralloc execute = STRALLOC_ZERO ;
 	
-	
-	char *envdata = 0 ;
-	if (!owner) envdata = SS_SERVICE_SYSCONFDIR ;
-	else
-	{
-		if (!set_ownerhome(&home,owner))
-		{ VERBO3 strerr_warnwu1sys("set home directory") ; return 0 ; }
-		if (!stralloc_cats(&home,SS_SERVICE_USERCONFDIR)) retstralloc(111,"write_exec") ;
-		if (!stralloc_0(&home)) retstralloc(111,"write_exec") ;
-		home.len-- ;
-		envdata = home.s ;
-	}	
-	
 	switch (exec->build)
 	{
 		case AUTO:
@@ -793,7 +781,8 @@ int write_exec(sv_alltype *sv, sv_exec *exec,char const *file,char const *dst,in
 			if (sv->opts[2] && (exec->build == AUTO))
 			{
 				if (!stralloc_cats(&env,SS_BINPREFIX "execl-envfile ")) retstralloc(0,"write_exec") ;
-				if (!stralloc_cats(&env,envdata)) retstralloc(0,"write_exec") ;
+				if (!env_resolve_conf(&env,name,owner)) 
+				{ VERBO3 strerr_warnwu1sys("get path of service configuration file") ; return 0 ; }
 				if (!stralloc_cats(&env,name)) retstralloc(0,"write_exec") ;
 				if (!stralloc_cats(&env,"\n")) retstralloc(0,"write_exec") ;
 			}
diff --git a/src/lib66/resolve.c b/src/lib66/resolve.c
index 3b45bec8a2227a3b990d4ec52d7446c862aa2c4a..89b88603bb94743ba2c023bf28f8e9a5282014f3 100644
--- a/src/lib66/resolve.c
+++ b/src/lib66/resolve.c
@@ -118,7 +118,7 @@ int ss_resolve_src_path(stralloc *sasrc,char const *sv, ssexec_t *info)
 	char const *src = 0 ;
 	unsigned int found = 0 ;
 	stralloc home = STRALLOC_ZERO ;
-	if (!info->owner) src = SS_SERVICE_SYSDIR ;
+	if (!info->owner) src = SS_SERVICE_ADMDIR ;
 	else
 	{	
 		if (!set_ownerhome(&home,info->owner)){ VERBO3 strerr_warnwu1sys("set home directory") ; goto err ; }
@@ -133,13 +133,13 @@ int ss_resolve_src_path(stralloc *sasrc,char const *sv, ssexec_t *info)
 	if (!r)
 	{
 		found = 0 ;
-		src = SS_SERVICE_SYSDIR ;
+		src = SS_SERVICE_ADMDIR ;
 		r = ss_resolve_src(sasrc,sv,src,&found) ;
 		if (r < 0) { VERBO3 strerr_warnwu2sys("parse source directory: ",src) ; goto err ; }
 		if (!r)
 		{
 			found = 0 ;
-			src = SS_SERVICE_PACKDIR ;
+			src = SS_SERVICE_SYSDIR ;
 			r = ss_resolve_src(sasrc,sv,src,&found) ;
 			if (r < 0) { VERBO3 strerr_warnwu2sys("parse source directory: ",src) ; goto err ; }
 			if (!r) { VERBO3 strerr_warnw2sys("unknown service: ",sv) ; goto err ; }
diff --git a/src/lib66/ssexec_env.c b/src/lib66/ssexec_env.c
index 6557d24e7f0d128e6d63b1b239cd585b1b318d1d..b1b4e66c35a2614b05cfa4ea6dcc3f66b4ef14a4 100644
--- a/src/lib66/ssexec_env.c
+++ b/src/lib66/ssexec_env.c
@@ -37,19 +37,10 @@ int ssexec_env(int argc, char const *const *argv,char const *const *envp,ssexec_
 	stralloc conf = STRALLOC_ZERO ;
 	stralloc var = STRALLOC_ZERO ;
 	stralloc salist = STRALLOC_ZERO ;
+	stralloc sasrc = STRALLOC_ZERO ;
 	
-	char const *src = 0 , *sv = 0 ;
-		
-	if (!info->owner) src = SS_SERVICE_SYSCONFDIR ;
-	else
-	{	
-		if (!set_ownerhome(&conf,info->owner)) strerr_diefu1sys(111,"set home directory");
-		if (!stralloc_cats(&conf,SS_SERVICE_USERCONFDIR)) retstralloc(111,"main") ;
-		if (!stralloc_0(&conf)) retstralloc(111,"main") ;
-		conf.len-- ;
-		src = conf.s ;
-	}
-	
+	char const *sv = 0, *src = 0 ;
+
 	{
 		subgetopt_t l = SUBGETOPT_ZERO ;
 
@@ -73,6 +64,8 @@ int ssexec_env(int argc, char const *const *argv,char const *const *envp,ssexec_
 	
 	if (argc < 1) exitusage(usage_env) ;
 	sv = argv[0] ;
+	if (!env_resolve_conf(&sasrc,sv,info->owner)) strerr_diefu1sys(111,"get path of the configuration file") ;
+	if (!src) src = sasrc.s ;
 	if (!file_readputsa(&salist,src,sv)) strerr_diefu3sys(111,"read: ",src,sv) ;
 	if (list)
 	{
@@ -108,7 +101,7 @@ int ssexec_env(int argc, char const *const *argv,char const *const *envp,ssexec_
 			if (!stralloc_cats(&newlist,"\n")) retstralloc(111,"replace") ;
 		}
 		if (!file_write_unsafe(src,sv,newlist.s,newlist.len))
-			strerr_diefu4sys(111,"write: ",src,"/",sv) ;
+			strerr_diefu3sys(111,"write: ",src,sv) ;
 	
 		stralloc_free(&newlist) ;
 		stralloc_free(&sa) ;
@@ -118,6 +111,7 @@ int ssexec_env(int argc, char const *const *argv,char const *const *envp,ssexec_
 	}
 	freed:
 		stralloc_free(&conf) ;
+		stralloc_free(&sasrc) ;
 		stralloc_free(&var) ;
 		stralloc_free(&salist) ;
 	return 0 ;