diff --git a/plugins/org.eclipse.osee.doors.connector.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.doors.connector.core/META-INF/MANIFEST.MF
index cdb358b..ab98659 100644
--- a/plugins/org.eclipse.osee.doors.connector.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.doors.connector.core/META-INF/MANIFEST.MF
@@ -21,7 +21,6 @@
  org.codehaus.jackson,
  org.codehaus.jackson.annotate,
  org.codehaus.jackson.node,
- org.eclipse.core.runtime,
  org.eclipse.jface.dialogs,
  org.eclipse.osee.framework.jdk.core.util,
  org.eclipse.osee.framework.logging,
@@ -32,4 +31,3 @@
  org.scribe.builder.api
 Bundle-ClassPath: .,
  lib/scribe-1.3.7.jar
-Require-Bundle: org.eclipse.ui.workbench;bundle-version="3.108.0"
diff --git a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/DoorsOSLCConnector.java b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/DoorsOSLCConnector.java
index f67b1c6..bec0b13 100644
--- a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/DoorsOSLCConnector.java
+++ b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/DoorsOSLCConnector.java
@@ -5,9 +5,9 @@
  */
 package org.eclipse.osee.doors.connector.core;
 
-import org.eclipse.jface.dialogs.MessageDialog;
+import java.util.logging.Level;
 import org.eclipse.osee.doors.connector.core.oauth.DWAOAuthService;
-import org.eclipse.ui.PlatformUI;
+import org.eclipse.osee.framework.logging.OseeLog;
 import org.scribe.model.Token;
 
 /**
@@ -49,8 +49,7 @@
             e.printStackTrace();
          }
       } else {
-         MessageDialog.openError(PlatformUI.getWorkbench().getDisplay().getActiveShell(), "Error",
-            "Failed to obtain valid authentication response");
+         OseeLog.log(DWAOAuthService.class, Level.WARNING, "Failed to obtain valid authentication response");
       }
       return parse;
    }
diff --git a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/oauth/DWAOAuthService.java b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/oauth/DWAOAuthService.java
index 76c68db..7b94a64 100644
--- a/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/oauth/DWAOAuthService.java
+++ b/plugins/org.eclipse.osee.doors.connector.core/src/org/eclipse/osee/doors/connector/core/oauth/DWAOAuthService.java
@@ -19,9 +19,7 @@
 import org.apache.commons.httpclient.methods.GetMethod;
 import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.commons.httpclient.util.URIUtil;
-import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.ui.PlatformUI;
 import org.scribe.extractors.TokenExtractorImpl;
 import org.scribe.model.OAuthConstants;
 import org.scribe.model.Token;
@@ -88,11 +86,9 @@
       try {
          requestTokenResponse = this.httpClient.executeMethod(requestPostMethod);
       } catch (HttpException e1) {
-         MessageDialog.openError(PlatformUI.getWorkbench().getDisplay().getActiveShell(), "Error",
-            "Failed to obtain valid authentication response");
+         OseeLog.log(DWAOAuthService.class, Level.WARNING, "Failed to obtain valid authentication response");
       } catch (IOException e1) {
-         MessageDialog.openError(PlatformUI.getWorkbench().getDisplay().getActiveShell(), "Error",
-            "Failed to obtain valid authentication response");
+         OseeLog.log(DWAOAuthService.class, Level.WARNING, "Failed to obtain valid authentication response");
       }
 
       Token requestToken = null;
@@ -105,8 +101,7 @@
          requestToken = tokenextractor.extract(StreamUtils.getStreamContents(responseBodyAsStream));
 
       } catch (IOException e1) {
-         MessageDialog.openError(PlatformUI.getWorkbench().getDisplay().getActiveShell(), "Error",
-            "Failed to obtain valid authentication response");
+         OseeLog.log(DWAOAuthService.class, Level.WARNING, "Failed to obtain valid authentication response");
       }
 
       return requestToken;
diff --git "a/plugins/org.eclipse.osee.support.config/launchConfig/OSEE_IDE_\133localhost\135.launch" "b/plugins/org.eclipse.osee.support.config/launchConfig/OSEE_IDE_\133localhost\135.launch"
index c49b01b..0810202 100644
--- "a/plugins/org.eclipse.osee.support.config/launchConfig/OSEE_IDE_\133localhost\135.launch"
+++ "b/plugins/org.eclipse.osee.support.config/launchConfig/OSEE_IDE_\133localhost\135.launch"
@@ -3,6 +3,7 @@
 <setAttribute key="additional_plugins">
 <setEntry value="com.google.guava:15.0.0.v201403281430:default:false"/>
 <setEntry value="org.eclipse.ui.views.log:1.2.0.v20160418-1724:default:true"/>
+<setEntry value="org.eclipse.ui.workbench:3.108.0.v20160602-1232:default:true"/>
 </setAttribute>
 <booleanAttribute key="append.args" value="true"/>
 <booleanAttribute key="askclear" value="true"/>
@@ -34,7 +35,6 @@
 <setAttribute key="selected_features">
 <setEntry value="org.eclipse.cvs.source:default"/>
 <setEntry value="org.eclipse.cvs:default"/>
-<setEntry value="org.eclipse.draw2d:default"/>
 <setEntry value="org.eclipse.e4.rcp.source:default"/>
 <setEntry value="org.eclipse.e4.rcp:default"/>
 <setEntry value="org.eclipse.emf.codegen.ecore.ui:default"/>
@@ -66,7 +66,6 @@
 <setEntry value="org.eclipse.equinox.p2.rcp.feature:default"/>
 <setEntry value="org.eclipse.equinox.p2.user.ui.source:default"/>
 <setEntry value="org.eclipse.equinox.p2.user.ui:default"/>
-<setEntry value="org.eclipse.gef:default"/>
 <setEntry value="org.eclipse.help.source:default"/>
 <setEntry value="org.eclipse.help:default"/>
 <setEntry value="org.eclipse.jdt.source:default"/>
@@ -82,6 +81,7 @@
 <setEntry value="org.eclipse.osee.core.runtime.feature:default"/>
 <setEntry value="org.eclipse.osee.core.ui.feature:default"/>
 <setEntry value="org.eclipse.osee.define.feature:default"/>
+<setEntry value="org.eclipse.osee.doors.feature:default"/>
 <setEntry value="org.eclipse.osee.external.feature:default"/>
 <setEntry value="org.eclipse.osee.framework.feature:default"/>
 <setEntry value="org.eclipse.osee.framework.ui.feature:default"/>
