diff --git a/LogParser/src/main/scripts/parserlog.sh b/LogParser/src/main/scripts/parserlog.sh
new file mode 100644
index 0000000..79ea8a3
--- /dev/null
+++ b/LogParser/src/main/scripts/parserlog.sh
@@ -0,0 +1,130 @@
+###
+# ============LICENSE_START=======================================================
+# LogParser
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# 
+#      http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+#!/bin/sh
+#
+# init script for a Java application
+#
+
+#Arguments for application
+SERVER=http://localhost:8070/pap/
+LOGTYPE=PAP 
+LOGPATH="/var/lib/servers/pap/logs/catalina.out"
+PARSERLOGPATH="$POLICY_HOME/logs/parserlog.log"
+JDBC_URL="jdbc:h2:tcp://localhost:9092/log"
+JDBC_USER="sa"
+JDBC_DRIVER="org.h2.Driver"
+JDBC_PASSWORD=""
+SERVICE="LogParser.jar"
+
+# Check the application status
+#
+# This function checks if the application is running
+check_status() {
+
+  # Running pgrep with some arguments to check if the PID exists
+  if pgrep -f "$SERVICE $SERVER $LOGTYPE" ; then
+     RESULT=$(pgrep -f ${SERVICE})
+     return $RESULT
+  fi
+  return 0
+  # In any another case, return 0
+
+}
+
+# Starts the application
+start() {
+
+  # At first checks if the application is already started calling the check_status
+  # function
+  check_status
+
+  # $? is a special variable that hold the "exit status of the most recently executed
+  # foreground pipeline"
+  pid=$?
+
+  if [ $pid -ne 0 ] ; then
+    echo "The application is already started"
+    exit 1
+  fi
+
+  # If the application isn't running, starts it
+  echo -n "Starting application: "
+
+  # Redirects default and error output to a log file
+  java -jar LogParser.jar $SERVER $LOGTYPE $LOGPATH $PARSERLOGPATH $JDBC_URL $JDBC_USER $JDBC_DRIVER $JDBC_PASSWORD>> $POLICY_HOME/logs/parserlog.log 2>&1 &
+  echo "OK"
+}
+
+# Stops the application
+stop() {
+
+  # Like as the start function, checks the application status
+  check_status
+
+  pid=$?
+
+  if [ $pid -eq 0 ] ; then
+    echo "Application is already stopped"
+    exit 1
+  fi
+
+  # Kills the application process
+  echo -n "Stopping application: "
+  kill -9 $pid &
+  echo "OK"
+}
+
+# Show the application status
+status() {
+
+  # The check_status function, again...
+  check_status
+
+  # If the PID was returned means the application is running
+  if [ $? -ne 0 ] ; then
+    echo "Application is started"
+  else
+    echo "Application is stopped"
+  fi
+
+}
+
+# Main logic, a simple case to call functions
+case "$1" in
+  start)
+    start
+    ;;
+  stop)
+    stop
+    ;;
+  status)
+    status
+    ;;
+  restart|reload)
+    stop
+    start
+    ;;
+  *)
+    echo "Usage: $0 {start|stop|restart|reload|status}"
+    exit 1
+esac
+
+exit 0
