diff --git a/ucc/ucc.plugin.karaf/pom.xml b/ucc/ucc.plugin.karaf/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..95c56c57768262384493b6fab38c3640e87c4459
--- /dev/null
+++ b/ucc/ucc.plugin.karaf/pom.xml
@@ -0,0 +1,95 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.universAAL.tools.ucc</groupId>
+  <artifactId>ucc.plugin.karaf</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <name>UCC Karaf Deploy plugin for Karaf</name>
+  <description>The deployment plugin for Karaf</description>
+  <packaging>bundle</packaging>
+    <dependencies>
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.osgi.core</artifactId>
+			<version>1.0.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.universAAL.middleware</groupId>
+			<artifactId>mw.data.representation</artifactId>
+			<version>1.1.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.universAAL.tools.ucc</groupId>
+			<artifactId>ucc.api</artifactId>
+			<version>1.1.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.universAAL.tools.ucc</groupId>
+			<artifactId>ucc.viewjambi</artifactId>
+			<version>1.1.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.qtjambi</groupId>
+			<artifactId>qtjambi</artifactId>
+			<version>4.5.2_01</version>
+		</dependency>
+	</dependencies>
+    <build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<Bundle-Name>${project.name}</Bundle-Name>
+						<Bundle-Activator>org.universAAL.ucc.plugin.karaf.Activator</Bundle-Activator>
+						<Bundle-Description>${project.description}</Bundle-Description>
+						<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+					</instructions>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+	<repositories>
+		<repository>
+			<id>central</id>
+			<name>Central Maven Repository</name>
+			<url>http://repo1.maven.org/maven2</url>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+		<repository>
+			<id>apache-snapshots</id>
+			<name>Apache Snapshots</name>
+			<url>http://people.apache.org/repo/m2-snapshot-repository</url>
+			<releases>
+				<enabled>false</enabled>
+			</releases>
+			<snapshots>
+				<updatePolicy>daily</updatePolicy>
+			</snapshots>
+		</repository>
+		<repository>
+			<id>uaal</id>
+			<name>universAAL Repositories</name>
+			<url>http://depot.universaal.org/maven-repo/releases/</url>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+		<repository>
+			<id>uaal-snapshots</id>
+			<name>universAAL Snapshot Repositories</name>
+			<url>http://depot.universaal.org/maven-repo/snapshots/</url>
+			<releases>
+				<enabled>false</enabled>
+			</releases>
+		</repository>
+		<repository>
+            <id>qtjambi</id>
+            <name>qtjambi</name>
+            <url>http://qtjambi.sourceforge.net/maven2/</url>
+        </repository>
+	</repositories>
+</project>
diff --git a/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/Activator.java b/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/Activator.java
new file mode 100644
index 0000000000000000000000000000000000000000..f72dfa774e71304166500bf1b841f86e6e52931e
--- /dev/null
+++ b/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/Activator.java
@@ -0,0 +1,73 @@
+package org.universAAL.ucc.plugin.karaf;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.universAAL.ucc.api.core.IInformation;
+import org.universAAL.ucc.api.plugin.IPluginBase;
+
+import com.trolltech.qt.QThread;
+
+/**
+ * 
+ * @author shanshan
+ * @version 1.0
+ * @created 14.05.2012
+ *
+ */
+
+public class Activator implements BundleActivator {
+	public static BundleContext context=null;
+	private static int max_retry = 10;
+	
+	static UCCPlugin uCCPlugin = null;
+	static IPluginBase uCCPluginBase = null;
+	static IInformation information = null;
+	
+	public static IInformation getInformation() {
+		return Activator.information;
+	}
+
+	public void start(BundleContext context) throws Exception {
+		Activator.context=context;
+		System.out.println("Karaf plugin Activator started!");
+		Activator.uCCPluginBase = (IPluginBase) this.getServiceObject(context, IPluginBase.class.getName());
+		Activator.information = (IInformation) this.getServiceObject(context, IInformation.class.getName());
+		
+		new QThread(new Runnable () {
+			public void run() {				
+				if (Activator.uCCPluginBase != null && information != null) {
+					Activator.uCCPlugin = new UCCPlugin(Activator.uCCPluginBase);
+					Activator.uCCPluginBase.registerPlugin(Activator.uCCPlugin);
+					//Activator.uCCPlugin.createGridViewItem();
+					System.out.println("Karaf Plugin started!");
+				}
+				else {
+					if (Activator.uCCPluginBase == null)
+						System.err.println("Can not start Karaf-view: Do not found Plugin-Base!");	
+					if (Activator.information == null)
+						System.err.println("Can not start Karaf-view: Do not found Information Service!");	
+				}
+			}
+		}).start();
+	}
+
+	public void stop(BundleContext arg0) throws Exception {
+	}
+	
+	private Object getServiceObject(BundleContext context, String name) throws Exception {
+		ServiceReference sr = null;
+		int retry_count = 0;
+		while (sr == null && retry_count<max_retry) {
+			sr = context.getServiceReference(name);
+			if (sr == null)
+				Thread.sleep(1000);
+			retry_count++;
+		}
+		if (sr != null)
+			return context.getService(sr);
+		return null;
+	}
+
+    
+}
diff --git a/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/UCCPlugin.java b/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/UCCPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..baf9d541cf1acb06a2293d16e7e4e46f5ab87250
--- /dev/null
+++ b/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/UCCPlugin.java
@@ -0,0 +1,56 @@
+package org.universAAL.ucc.plugin.karaf;
+
+import org.universAAL.ucc.api.plugin.IPlugin;
+import org.universAAL.ucc.api.plugin.IPluginBase;
+import org.universAAL.ucc.api.plugin.PluginGridViewItem;
+import org.universAAL.ucc.api.plugin.PluginMenu;
+import org.universAAL.ucc.plugin.karaf.gui.KarafDeployView;
+
+/**
+ * 
+ * @author shanshan
+ * @version 1.0
+ * @created 14.05.2012
+ * 
+ *
+ */
+public class UCCPlugin implements IPlugin {
+	
+	private PluginMenu menu = new PluginMenu("Plugin Karaf");
+	private KarafDeployView karafView = null;
+	private IPluginBase uCCPluginBase = null;
+	
+	
+	public UCCPlugin(IPluginBase uCCPluginBase) {
+		this.uCCPluginBase = uCCPluginBase;
+		createMenu();
+		createGridViewItem();
+	}
+
+	public void registerViews() {
+		uCCPluginBase.addMenu(menu);
+		
+		karafView = new KarafDeployView(uCCPluginBase);
+		uCCPluginBase.getMainView().hideSubWindow(karafView);
+	}
+	
+	public void createMenu() {
+		menu.addEntry("Deploy To Karaf", new Runnable() {
+
+			public void run() {
+				uCCPluginBase.getMainView().showSubWindow(karafView);
+			}
+			
+		});
+	}
+	public void createGridViewItem(){
+		PluginGridViewItem gv= new PluginGridViewItem("Deploy To\nKaraf", "addressbook2.png",	new Runnable() {
+
+			public void run() {
+				uCCPluginBase.getMainView().showSubWindow(karafView);
+			}
+			
+		});
+		uCCPluginBase.addGridItem(gv);
+	}
+}
diff --git a/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/gui/KarafDeployView.java b/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/gui/KarafDeployView.java
new file mode 100644
index 0000000000000000000000000000000000000000..3c33ea117c0b99a7c9f65989b45f0bca99b4da29
--- /dev/null
+++ b/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/gui/KarafDeployView.java
@@ -0,0 +1,284 @@
+package org.universAAL.ucc.plugin.karaf.gui;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Enumeration;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
+
+import org.universAAL.ucc.api.plugin.IPluginBase;
+import org.universAAL.ucc.plugin.karaf.gui.juic.Ui_KarafDeployView;
+import org.universAAL.ucc.viewjambi.common.SubWindow;
+
+import com.trolltech.qt.core.QDir;
+import com.trolltech.qt.gui.*;
+
+/**
+ * This file deploys an application downloaded as .uaal to local Karaf 
+ * It uses many methods (and modified accordingly) from ucc.core.installer
+ *  
+ * @author shanshan
+ *
+ */
+public class KarafDeployView extends SubWindow {
+
+    private static Ui_KarafDeployView karaf_base = new Ui_KarafDeployView();  
+
+    private IPluginBase uCCPluginBase = null;
+    
+       
+    public KarafDeployView(IPluginBase uCCPluginBase) {
+        super(KarafDeployView.karaf_base);
+        this.uCCPluginBase = uCCPluginBase;
+        		
+		karaf_base.pushButton_karaf.clicked.connect(this,"getKarafPath()");
+		karaf_base.pushButton_app.clicked.connect(this, "getAppFile()");
+		karaf_base.pushButton_ok.clicked.connect(this, "deployToKaraf()");
+		karaf_base.pushButton_cancel.clicked.connect(this, "cancel()");
+    }
+
+
+    protected void getKarafPath() {
+    	System.out.println("getting karaf installation path...");
+    	
+    	String directory = QFileDialog.getExistingDirectory(this,
+                "karaf installation path", QDir.currentPath());
+    	if (!directory.equals("")) {    		
+				karaf_base.lineEdit_karaf.setText(directory);
+				System.out.println("karaf installation path: " + karaf_base.lineEdit_karaf.text());
+		}
+	}
+    
+    protected void getAppFile() {
+    	System.out.println("getting application installation file (.uaal)");
+		QFileDialog dialog = new QFileDialog(this, "Please choose a file to install!", ".", "universAAL (*.uaal)");
+		int result = dialog.exec();
+		
+		if (result == QDialog.DialogCode.Accepted.value()) {
+			String file = dialog.selectedFiles().get(0);
+			if (file != null)
+				karaf_base.lineEdit_app.setText(file);
+				System.out.println("application to be installed: " + karaf_base.lineEdit_app.text());
+		}
+	}
+	
+	protected void deployToKaraf() {
+		System.out.println("Deploying to Karaf started");
+		String karafPath = karaf_base.lineEdit_karaf.text();
+		karafPath = karafPath.replace("/", "\\");
+		String p=karaf_base.lineEdit_app.text();
+		p=p.replace("/", "\\");
+		try {
+			String appDir = deployApplication(karafPath,p);
+			QMessageBox.information(this, "Karaf deployment", "Deployment to Karaf has been successfully completed!");
+			this.uCCPluginBase.getMainView().hideSubWindow(this);			
+		} catch (NullPointerException e){
+			QMessageBox.critical(this, "Error", "Deployment failed! The Application probably already is installed!");
+		} catch (Exception e) {
+			QMessageBox.critical(this, "Error", e.getMessage());
+			this.uCCPluginBase.getMainView().hideSubWindow(this);
+		}
+	}
+	
+	protected void cancel() {
+		System.out.println("Cancel button is pressed");
+		this.uCCPluginBase.getMainView().removeSubWindow(this);
+	}
+
+	/**
+	 * deploy the application appP to karafP
+	 * @param karafP
+	 * @param appP
+	 * @return
+	 * @throws Exception 
+	 */
+	private String deployApplication(String karafP, String appP) throws Exception  {
+		// TODO: check if the application installation file is valid, i.e., the .uaal file
+		// unzip the .uaal file, put
+		System.out.println("[deployApplication] karaf path: " + karafP + "; app path: "+ appP);
+		String exdir=extractBundles(karafP, appP);
+		if (exdir==null) throw new Exception("Error extracting uaal Package");
+		System.out.println("[karaf] the application files are extracted under " + exdir);
+		File appDir=new File(exdir);
+		checkApplicationForInstall(appDir);
+		String[] bundlelist=appDir.list();
+		for(int i=0;i<bundlelist.length;i++){
+			if(bundlelist[i].endsWith(".jar")){
+				// copy .jars to /deploy folder
+				String dPath = karafP + "\\deploy";
+				System.out.println("copy " + bundlelist[i] + " to " + dPath);
+				File inFile = new File(appDir, bundlelist[i]);
+				File outFile = new File(dPath, bundlelist[i]);
+				//copyfile(inFile, outFile);
+				copy(inFile, outFile);
+			} 
+			if (bundlelist[i].endsWith(".cfg")){
+				// copy .cfgs to /etc folder
+				String cPath = karafP + "\\etc";
+				System.out.println("copy " + bundlelist[i] + " to " + cPath);
+				File inFile = new File(appDir, bundlelist[i]);
+				File outFile = new File(cPath, bundlelist[i]);
+				//copyfile(inFile, outFile);
+				copy(inFile, outFile);
+			}
+		} 
+		return exdir;
+	}
+	
+	/**
+	 * Is bundle valid? All need files available? Dependencies to check and all
+	 * right? Check if concrete instances available (but how)?
+	 * 
+	 * TODO: If we use features descriptor, then check this. To be updated...
+	 * 
+	 * @param Path
+	 * @throws Exception 
+	 */
+	private void checkApplicationForInstall(File folder) throws Exception {
+		String[] content = folder.list();
+		boolean jarok=false;
+		boolean configok=false;
+		boolean eulaok=false;
+		for(int i=0;i<content.length;i++){
+			if(content[i].endsWith(".jar")) jarok=true;
+			//if(content[i].equals("config.owl")) configok=true;
+			if(content[i].equals("EULA.txt")) eulaok=true;
+		}
+		if(!jarok) throw new Exception("There is no installable jar File in uaal Package!");
+		//if(!configok) throw new Exception("config.owl file not found!");
+		//if(!eulaok) throw new Exception("No License agreement found!");
+	}
+	
+	private String extractBundles(String karafPath, String path) {
+	      
+		String destDir = path.substring(path.lastIndexOf(File.separator) + 1,path.lastIndexOf("."));
+		destDir = karafPath +"\\"+ destDir;
+		File appDir=new File(destDir);
+		int suffix=1;
+		int slength=0;
+		while(appDir.exists()){
+			destDir=destDir.substring(0, destDir.length()-slength)+suffix;
+			slength=(suffix+"").length();
+			appDir=new File(destDir);
+			suffix++;
+		}
+		appDir.mkdir();
+		try {
+			extractFolder(path, destDir);
+		} catch (ZipException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+			return destDir;
+		}
+	
+	static public void extractFolder(String zipFile, String destdir) throws ZipException, IOException 
+	{
+	    System.out.println(zipFile);
+	    int BUFFER = 2048;
+	    File file = new File(zipFile);
+
+	    ZipFile zip = new ZipFile(file);
+	    String newPath = destdir;
+
+	    new File(newPath).mkdir();
+	    Enumeration zipFileEntries = zip.entries();
+
+	    // Process each entry
+	    while (zipFileEntries.hasMoreElements())
+	    {
+	        // grab a zip file entry
+	        ZipEntry entry = (ZipEntry) zipFileEntries.nextElement();
+	        String currentEntry = entry.getName();
+	        File destFile = new File(newPath, currentEntry);
+	        //destFile = new File(newPath, destFile.getName());
+	        File destinationParent = destFile.getParentFile();
+
+	        // create the parent directory structure if needed
+	        destinationParent.mkdirs();
+
+	        if (!entry.isDirectory())
+	        {
+	            BufferedInputStream is = new BufferedInputStream(zip
+	            .getInputStream(entry));
+	            int currentByte;
+	            // establish buffer for writing file
+	            byte data[] = new byte[BUFFER];
+
+	            // write the current file to disk
+	            FileOutputStream fos = new FileOutputStream(destFile);
+	            BufferedOutputStream dest = new BufferedOutputStream(fos,
+	            BUFFER);
+
+	            // read and write until last byte is encountered
+	            while ((currentByte = is.read(data, 0, BUFFER)) != -1) {
+	                dest.write(data, 0, currentByte);
+	            }
+	            dest.flush();
+	            dest.close();
+	            is.close();
+	        }
+
+	    }
+	}
+	
+	public boolean copy(File inputFile, File outputFile) {
+		try {
+			FileReader in = new FileReader(inputFile);
+			FileWriter out = new FileWriter(outputFile);
+			int c;
+
+			while ((c = in.read()) != -1)
+				out.write(c);
+
+			in.close();
+			out.close();
+		} catch (Exception e) {
+			return false;
+		}
+		return true;
+	}
+	
+	private void copyfile(File f1, File f2){
+		  try{
+			  //File f1 = new File(srFile);
+			  //File f2 = new File(dtFile);
+			  InputStream in = new FileInputStream(f1);
+			  
+			  //For Append the file.
+			//  OutputStream out = new FileOutputStream(f2,true);
+
+			  //For Overwrite the file.
+			  OutputStream out = new FileOutputStream(f2);
+
+			  byte[] buf = new byte[1024];
+			  int len;
+			  while ((len = in.read(buf)) > 0){
+				  out.write(buf, 0, len);
+			  }
+			  in.close();
+			  out.close();
+			  System.out.println("File copied.");
+		  }
+		  catch(FileNotFoundException ex){
+			  System.out.println(ex.getMessage() + " in the specified directory.");
+			  System.exit(0);
+		  }
+		  catch(IOException e){
+			  System.out.println(e.getMessage());  
+		  }
+		}
+}
diff --git a/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/gui/juic/Ui_KarafDeployView.java b/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/gui/juic/Ui_KarafDeployView.java
new file mode 100644
index 0000000000000000000000000000000000000000..b3c47eab44115ff10756b5d4cdd17224782ac288
--- /dev/null
+++ b/ucc/ucc.plugin.karaf/src/main/java/org/universAAL/ucc/plugin/karaf/gui/juic/Ui_KarafDeployView.java
@@ -0,0 +1,115 @@
+/********************************************************************************
+** Form generated from reading ui file 'KarafDeployView.jui'
+**
+** Created: on 16. mai 11:11:05 2012
+**      by: Qt User Interface Compiler version 4.5.2
+**
+** WARNING! All changes made in this file will be lost when recompiling ui file!
+********************************************************************************/
+
+package org.universAAL.ucc.plugin.karaf.gui.juic;
+
+import com.trolltech.qt.core.*;
+import com.trolltech.qt.gui.*;
+
+public class Ui_KarafDeployView implements com.trolltech.qt.QUiForm<QWidget>
+{
+    public QVBoxLayout verticalLayout;
+    public QGridLayout gridLayout;
+    public QLabel label;
+    public QLineEdit lineEdit_karaf;
+    public QPushButton pushButton_karaf;
+    public QGridLayout gridLayout_2;
+    public QLabel label_2;
+    public QLineEdit lineEdit_app;
+    public QPushButton pushButton_app;
+    public QGridLayout gridLayout_3;
+    public QPushButton pushButton_ok;
+    public QPushButton pushButton_cancel;
+    public QSpacerItem horizontalSpacer;
+
+    public Ui_KarafDeployView() { super(); }
+
+    public void setupUi(QWidget KarafDeployView)
+    {
+        KarafDeployView.setObjectName("KarafDeployView");
+        KarafDeployView.resize(new QSize(600, 202).expandedTo(KarafDeployView.minimumSizeHint()));
+        verticalLayout = new QVBoxLayout(KarafDeployView);
+        verticalLayout.setObjectName("verticalLayout");
+        gridLayout = new QGridLayout();
+        gridLayout.setObjectName("gridLayout");
+        label = new QLabel(KarafDeployView);
+        label.setObjectName("label");
+
+        gridLayout.addWidget(label, 0, 0, 1, 1);
+
+        lineEdit_karaf = new QLineEdit(KarafDeployView);
+        lineEdit_karaf.setObjectName("lineEdit_karaf");
+
+        gridLayout.addWidget(lineEdit_karaf, 0, 1, 1, 1);
+
+        pushButton_karaf = new QPushButton(KarafDeployView);
+        pushButton_karaf.setObjectName("pushButton_karaf");
+
+        gridLayout.addWidget(pushButton_karaf, 0, 2, 1, 1);
+
+
+        verticalLayout.addLayout(gridLayout);
+
+        gridLayout_2 = new QGridLayout();
+        gridLayout_2.setObjectName("gridLayout_2");
+        label_2 = new QLabel(KarafDeployView);
+        label_2.setObjectName("label_2");
+
+        gridLayout_2.addWidget(label_2, 0, 0, 1, 1);
+
+        lineEdit_app = new QLineEdit(KarafDeployView);
+        lineEdit_app.setObjectName("lineEdit_app");
+
+        gridLayout_2.addWidget(lineEdit_app, 0, 1, 1, 1);
+
+        pushButton_app = new QPushButton(KarafDeployView);
+        pushButton_app.setObjectName("pushButton_app");
+
+        gridLayout_2.addWidget(pushButton_app, 0, 2, 1, 1);
+
+
+        verticalLayout.addLayout(gridLayout_2);
+
+        gridLayout_3 = new QGridLayout();
+        gridLayout_3.setObjectName("gridLayout_3");
+        pushButton_ok = new QPushButton(KarafDeployView);
+        pushButton_ok.setObjectName("pushButton_ok");
+
+        gridLayout_3.addWidget(pushButton_ok, 0, 1, 1, 1);
+
+        pushButton_cancel = new QPushButton(KarafDeployView);
+        pushButton_cancel.setObjectName("pushButton_cancel");
+
+        gridLayout_3.addWidget(pushButton_cancel, 0, 2, 1, 1);
+
+        horizontalSpacer = new QSpacerItem(40, 20, com.trolltech.qt.gui.QSizePolicy.Policy.Expanding, com.trolltech.qt.gui.QSizePolicy.Policy.Minimum);
+
+        gridLayout_3.addItem(horizontalSpacer, 0, 0, 1, 1);
+
+
+        verticalLayout.addLayout(gridLayout_3);
+
+        retranslateUi(KarafDeployView);
+
+        KarafDeployView.connectSlotsByName();
+    } // setupUi
+
+    void retranslateUi(QWidget KarafDeployView)
+    {
+        KarafDeployView.setWindowTitle(com.trolltech.qt.core.QCoreApplication.translate("KarafDeployView", "Karaf Deploy Window", null));
+        label.setText(com.trolltech.qt.core.QCoreApplication.translate("KarafDeployView", "Karaf Installation Path", null));
+        pushButton_karaf.setText(com.trolltech.qt.core.QCoreApplication.translate("KarafDeployView", "Browse...", null));
+        label_2.setText(com.trolltech.qt.core.QCoreApplication.translate("KarafDeployView", "Application To Be Installed", null));
+        pushButton_app.setText(com.trolltech.qt.core.QCoreApplication.translate("KarafDeployView", "Browse...", null));
+        pushButton_ok.setText(com.trolltech.qt.core.QCoreApplication.translate("KarafDeployView", "OK", null));
+        pushButton_cancel.setText(com.trolltech.qt.core.QCoreApplication.translate("KarafDeployView", "Cancel", null));
+    } // retranslateUi
+
+}
+
diff --git a/ucc/ucc.plugin.karaf/src/main/resources/forms/org/universAAL/ucc/plugin/karaf/gui/juic/KarafDeployView.jui b/ucc/ucc.plugin.karaf/src/main/resources/forms/org/universAAL/ucc/plugin/karaf/gui/juic/KarafDeployView.jui
new file mode 100644
index 0000000000000000000000000000000000000000..8877da5e3159187e418b550cc4c2045c800ed47c
--- /dev/null
+++ b/ucc/ucc.plugin.karaf/src/main/resources/forms/org/universAAL/ucc/plugin/karaf/gui/juic/KarafDeployView.jui
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0" language="jambi">
+ <class>KarafDeployView</class>
+ <widget class="QWidget" name="KarafDeployView">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>600</width>
+    <height>202</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Karaf Deploy Window</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="0">
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>Karaf Installation Path</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QLineEdit" name="lineEdit_karaf"/>
+     </item>
+     <item row="0" column="2">
+      <widget class="QPushButton" name="pushButton_karaf">
+       <property name="text">
+        <string>Browse...</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QGridLayout" name="gridLayout_2">
+     <item row="0" column="0">
+      <widget class="QLabel" name="label_2">
+       <property name="text">
+        <string>Application To Be Installed</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QLineEdit" name="lineEdit_app"/>
+     </item>
+     <item row="0" column="2">
+      <widget class="QPushButton" name="pushButton_app">
+       <property name="text">
+        <string>Browse...</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QGridLayout" name="gridLayout_3">
+     <item row="0" column="1">
+      <widget class="QPushButton" name="pushButton_ok">
+       <property name="text">
+        <string>OK</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="2">
+      <widget class="QPushButton" name="pushButton_cancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="0">
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>com.trolltech.qt.core.Qt.Orientation.Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/ucc/ucc.plugin.karaf/src/main/resources/icon/karaf-logo.png b/ucc/ucc.plugin.karaf/src/main/resources/icon/karaf-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..066ab8630a6f9bb9280290333a0b10b5f6e8bfa2
Binary files /dev/null and b/ucc/ucc.plugin.karaf/src/main/resources/icon/karaf-logo.png differ
diff --git a/ucc/ucc.plugin.karaf/src/main/resources/lib/qtjambi-4.5.2_01.jar b/ucc/ucc.plugin.karaf/src/main/resources/lib/qtjambi-4.5.2_01.jar
new file mode 100644
index 0000000000000000000000000000000000000000..745e43c5a9d7cfb10238e668387d811d5420a06e
Binary files /dev/null and b/ucc/ucc.plugin.karaf/src/main/resources/lib/qtjambi-4.5.2_01.jar differ