Index: src/main/java/org/xwiki/officeimporter/OfficeImporterVelocityBridge.java
===================================================================
--- src/main/java/org/xwiki/officeimporter/OfficeImporterVelocityBridge.java	(revision 34236)
+++ src/main/java/org/xwiki/officeimporter/OfficeImporterVelocityBridge.java	(working copy)
@@ -36,8 +36,10 @@
 import org.xwiki.officeimporter.builder.XHTMLOfficeDocumentBuilder;
 import org.xwiki.officeimporter.document.XDOMOfficeDocument;
 import org.xwiki.officeimporter.document.XHTMLOfficeDocument;
+import org.xwiki.officeimporter.openoffice.OpenOfficeConfiguration;
 import org.xwiki.officeimporter.openoffice.OpenOfficeManager;
 import org.xwiki.officeimporter.openoffice.OpenOfficeManager.ManagerState;
+import org.xwiki.officeimporter.openoffice.OpenOfficeManagerException;
 import org.xwiki.officeimporter.splitter.TargetDocumentDescriptor;
 import org.xwiki.officeimporter.splitter.XDOMOfficeDocumentSplitter;
 
@@ -85,6 +87,11 @@
     private OpenOfficeManager officeManager;
 
     /**
+     * Used to query openoffice config.
+     */
+    private OpenOfficeConfiguration officeConfiguration;
+
+    /**
      * Used for building {@link XHTMLOfficeDocument} instances from office documents.
      */
     private XHTMLOfficeDocumentBuilder xhtmlBuilder;
@@ -127,6 +134,7 @@
             this.currentMixedDocumentReferenceResolver =
                 componentManager.lookup(DocumentReferenceResolver.class, "currentmixed");
             this.officeManager = componentManager.lookup(OpenOfficeManager.class);
+            this.officeConfiguration = componentManager.lookup(OpenOfficeConfiguration.class);
             this.xhtmlBuilder = componentManager.lookup(XHTMLOfficeDocumentBuilder.class);
             this.xdomBuilder = componentManager.lookup(XDOMOfficeDocumentBuilder.class);
             this.presentationBuilder = componentManager.lookup(PresentationBuilder.class);
@@ -158,7 +166,7 @@
             connect();
             return xhtmlBuilder.build(officeFileStream, officeFileName, currentMixedDocumentReferenceResolver
                 .resolve(referenceDocument), filterStyles);
-        } catch (OfficeImporterException ex) {
+        } catch (Exception ex) {
             setErrorMessage(ex.getMessage());
             logger.error(ex.getMessage(), ex);
         }
@@ -213,7 +221,7 @@
             } else {
                 return xdomBuilder.build(officeFileStream, officeFileName, reference, filterStyles);
             }
-        } catch (OfficeImporterException ex) {
+        } catch (Exception ex) {
             setErrorMessage(ex.getMessage());
             logger.error(ex.getMessage(), ex);
         }
@@ -352,11 +360,20 @@
      * Attempts to connect to an openoffice server for conversions.
      * 
      * @throws OfficeImporterException if an openoffice server is not available.
+     * @throws OpenOfficeManagerException if the openoffice server could not be started.
      */
-    private void connect() throws OfficeImporterException
+    private void connect() throws OfficeImporterException, OpenOfficeManagerException
     {
-        if (!officeManager.getState().equals(ManagerState.CONNECTED)) {
-            throw new OfficeImporterException("OpenOffice server unavailable.");
+        boolean state = officeManager.getState().equals(ManagerState.CONNECTED);
+        if (!state) {
+            // we should check if we are in auto start mode, if so start 
+            if (officeConfiguration.isAutoStart()) {
+                officeManager.start();
+                state = officeManager.getState().equals(ManagerState.CONNECTED);
+            }
+            if (!state) {
+                throw new OfficeImporterException("OpenOffice server unavailable.");
+            }
         }
     }
 
Index: src/main/java/org/xwiki/officeimporter/internal/openoffice/DefaultOpenOfficeManager.java
===================================================================
--- src/main/java/org/xwiki/officeimporter/internal/openoffice/DefaultOpenOfficeManager.java	(revision 34236)
+++ src/main/java/org/xwiki/officeimporter/internal/openoffice/DefaultOpenOfficeManager.java	(working copy)
@@ -159,16 +159,24 @@
      */
     public void start() throws OpenOfficeManagerException
     {
-        if (!checkState(ManagerState.CONNECTED)) {
-            initialize();
+        // if the process is marked connected, let's restart 
+        boolean isConnected = checkState(ManagerState.CONNECTED);
+        if (isConnected) {
             try {
-                this.jodOOManager.start();
-                setState(ManagerState.CONNECTED);
-                getLogger().info("Open Office instance started.");
-            } catch (Exception ex) {
-                setState(ManagerState.ERROR);
-                throw new OpenOfficeManagerException("Error while connecting / starting openoffice.", ex);
+                stop();
+            } catch(Exception ex) {
+                getLogger().error("OpenOffice status was connected but could not be stopped", ex);
             }
+        } 
+
+        initialize();
+        try {
+            this.jodOOManager.start();
+            setState(ManagerState.CONNECTED);
+            getLogger().info("Open Office instance started.");
+        } catch(Exception ex) {
+            setState(ManagerState.ERROR);
+            throw new OpenOfficeManagerException("Error while connecting / starting openoffice.", ex);
         }
     }
 
@@ -179,12 +187,15 @@
      */
     public void stop() throws OpenOfficeManagerException
     {
-        if (checkState(ManagerState.CONNECTED)) {
-            try {
-                this.jodOOManager.stop();
-                setState(ManagerState.NOT_CONNECTED);
-                getLogger().info("Open Office instance stopped.");
-            } catch (Exception ex) {
+        // we should try stopping even if the status is not connected
+        // but we should not raise an error if there is a failure to stop
+        boolean isConnected = checkState(ManagerState.CONNECTED);
+        try {
+            this.jodOOManager.stop();
+            setState(ManagerState.NOT_CONNECTED);
+            getLogger().info("Open Office instance stopped.");
+        } catch (Exception ex) {
+            if (!isConnected) {
                 setState(ManagerState.ERROR);
                 throw new OpenOfficeManagerException("Error while disconnecting / shutting down openoffice.", ex);
             }
