diff --git a/Apache/SOGo.conf b/Apache/SOGo.conf
index 6d62b4691..493e60396 100644
--- a/Apache/SOGo.conf
+++ b/Apache/SOGo.conf
@@ -30,8 +30,12 @@ AliasMatch /SOGo/so/ControlPanel/Products/(.*)/Resources/(.*) \
BalancerMember http://127.0.0.1:20000 retry=1 max=1 timeout=120
- BalancerMember http://127.0.0.1:20001 retry=1 max=1 timeout=120
- BalancerMember http://127.0.0.1:20002 retry=1 max=1 timeout=120
+# If you enable those, don't forget the enable the spawning of multiple SOGo
+# processes. With Redhat-based distributions, this is done by setting the
+# "PREFORK" variable in /etc/sysconfig/sogo to the amount of processes as
+# value.
+# BalancerMember http://127.0.0.1:20001 retry=1 max=1 timeout=120
+# BalancerMember http://127.0.0.1:20002 retry=1 max=1 timeout=120
ProxySet lbmethod=byrequests maxattempts=1
diff --git a/Scripts/sogo-init.d-sles b/Scripts/sogo-init.d-sles
new file mode 100755
index 000000000..6ab56c2d0
--- /dev/null
+++ b/Scripts/sogo-init.d-sles
@@ -0,0 +1,202 @@
+#!/bin/bash
+# chkconfig: 2345 85 15
+# description: SOGo is a groupware server
+# processname: sogod
+# config: /etc/sysconfig/sogo
+# config: /etc/httpd/conf.d/SOGo.conf
+# pidfile: /var/run/sogo/sogod.pid
+
+# SOGo init script for SUSE Linux Enterprise Server
+#
+# Copyright (C) 2007-2009 Inverse inc.
+#
+# Authors: Wolfgang Sourdeau
+# Francis Lachapelle
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# sogod Scalable OpenGroupware.org (Inverse edition)
+
+PREFORK=1
+SOGO_ARGS=""
+USER=sogo
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+. /lib/lsb/init-functions
+
+if [ -z "$GNUSTEP_SYSTEM_ROOT" ]
+then
+ . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh
+fi
+
+REAL_DAEMON=sogod
+DAEMON=/usr/sbin/sogod
+NAME=sogod
+DESC="Scalable OpenGroupware.Org (Inverse edition)"
+
+PIDFILE=/var/run/sogo/sogod.
+
+if [ -f /etc/sysconfig/sogo ]; then
+ . /etc/sysconfig/sogo
+fi
+
+if [ ! -x $DAEMON ]; then
+ echo "$DAEMON is not executable."
+ exit 1
+fi
+
+checkDir() {
+ directory="$1"
+ if [ ! -d "$directory" ]
+ then
+ echo "$directory does not exist."
+ exit 1
+ fi
+
+ if [ `/usr/bin/stat "$directory" -c %U` != "$USER" ]
+ then
+ echo "$directory is not owned by the sogo user."
+ exit 1
+ fi
+}
+
+checkDir /var/run/sogo
+checkDir /var/spool/sogo
+
+#set -e
+
+start() {
+ echo $"Starting $DESC: "
+ for ((a=1; a <= PREFORK ; a++))
+ do
+ ppid="`cat ${PIDFILE}${a} 2> /dev/null`"
+ if [ -n "$ppid" ]
+ then
+ ppid="`ps --pid ${ppid} -o pid=`"
+ if [ -n "$ppid" ]
+ then
+ echo " $DAEMON $a already running. Skipped."
+ else
+ rm -f ${PIDFILE}${a}
+ startproc -u "$USER" "$DAEMON" $a
+ echo " $DAEMON $a (stale pid file removed)"
+ fi
+ else
+ startproc -u "$USER" "$DAEMON" $a
+ echo " $DAEMON $a"
+ fi
+ done
+}
+
+stop() {
+ echo $"Stopping $DESC: "
+ su "$USER" -c '/usr/bin/killall gdnc >& /dev/null'
+ # We kill the parent processes with SIGTERM so that they
+ # can exit gracefully.
+ for ((a=1; a <= PREFORK ; a++))
+ do
+ ppid="`cat ${PIDFILE}${a} 2> /dev/null`"
+ if [ -n "$ppid" ]
+ then
+ ppid="`ps --pid ${ppid} -o pid=`"
+ if [ -n "$ppid" ]
+ then
+ if kill $ppid >& /dev/null
+ then
+ echo " $DAEMON $a stopped"
+ fi
+ else
+ echo " $DAEMON $a not running"
+ fi
+ else
+ echo " $DAEMON $a not running"
+ fi
+ done
+
+ sleep 1
+ # We kill the parent and child processes with SIGKILL to make sure they
+ # really are shutdown, and then we remove their pidfile.
+ for ((a=1; a <= PREFORK ; a++))
+ do
+ ppid="`cat ${PIDFILE}${a} 2> /dev/null`"
+ if [ -n "$ppid" ]
+ then
+ ppid="`ps --pid ${ppid} -o pid= 2> /dev/null`"
+ if [ -n "$ppid" ]
+ then
+ kill -9 $ppid >& /dev/null
+ pid="`ps --ppid ${ppid} -o pid= 2> /dev/null`"
+ if [ -n "$pid" ]
+ then
+ kill -9 $pid >& /dev/null
+ fi
+ echo " $DAEMON $a killed"
+ fi
+ fi
+ rm -f ${PIDFILE}${a}
+ done
+}
+
+restart() {
+ echo $"Restarting $DESC: "
+ su "$USER" -c '/usr/bin/killall gdnc >& /dev/null'
+ for ((a=1; a <= PREFORK ; a++))
+ do
+ ppid="`cat ${PIDFILE}${a} 2> /dev/null`"
+ if [ -n "$ppid" ]
+ then
+ ppid="`ps --pid ${ppid} -o pid=`"
+ if [ -n "$ppid" ]
+ then
+ kill $ppid >& /dev/null
+ sleep 1
+ fi
+ ppid="`ps --pid ${ppid} -o pid=`"
+ if [ -n "$ppid" ]
+ then
+ pid="`ps --ppid ${ppid} -o pid=`"
+ kill -9 $ppid >& /dev/null
+ kill -9 $pid >& /dev/null
+ fi
+ rm -f ${PIDFILE}${a}
+ fi
+ startproc -u "$USER" "$DAEMON" $a
+ echo " $DAEMON $a"
+ done
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|force-reload)
+ restart
+ ;;
+ status)
+ status $REAL_DAEMON
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/Scripts/sogod-wrapper b/Scripts/sogod-wrapper
index b39bcdc8c..6d5550766 100755
--- a/Scripts/sogod-wrapper
+++ b/Scripts/sogod-wrapper
@@ -70,7 +70,7 @@ else
let "port=$startport + $1 - 1"
fi
-echo "SOGOD: $sogod" 2>&1
+# echo "SOGOD: $sogod" 2>&1
exec $sogod -WOPort $port >> /var/log/sogo/sogod-$port.log 2>&1 &
echo $! > $PIDFILE