Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/AzureProvider.cs
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/AzureProvider.cs	(revision 7562)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/AzureProvider.cs	(revision 7563)
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using System.IO;
 using HeuristicLab.Clients.Hive.CloudManager.Model;
 
@@ -161,4 +162,17 @@
     }
 
+    public string CreateDeployment(Subscription subscription, string serviceName, string deploymentName, string deploymentSlot, string packageUrl, FileInfo configuration, string label, int instanceCount) {
+      if (subscription == null) {
+        throw new ArgumentNullException("Subscription must not be null.", "subscription");
+      }
+      if (instanceCount <= 0) {
+        throw new ArgumentException("Instance count must be greater than zero.", "instanceCount");
+      }
+
+      string config = File.ReadAllText(configuration.FullName);
+      return ServiceManagementOperation.CreateDeployment(subscription.SubscriptionID, subscription.CertificateThumbprint, serviceName, deploymentName, deploymentSlot, packageUrl, config, label, instanceCount);
+
+    }
+
     public string DeleteHostedService(Subscription subscription, string serviceName) {
       if (subscription == null) {
Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/CloudBlobExtension.cs
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/CloudBlobExtension.cs	(revision 7562)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/CloudBlobExtension.cs	(revision 7563)
@@ -1,6 +1,17 @@
 ﻿
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Threading.Tasks;
 using Microsoft.WindowsAzure.StorageClient;
 namespace HeuristicLab.Clients.Hive.CloudManager.Azure {
   public static class CloudBlobExtension {
+    private class BlockTransferDetail {
+      public int StartPosition { get; set; }
+      public int BytesToRead { get; set; }
+      public string BlockId { get; set; }
+    }
+
     //check if a blob exists
     // see: http://stackoverflow.com/questions/2642919/checking-if-a-blob-exists-in-azure-storage
@@ -17,4 +28,48 @@
         }
       }
+    }
+
+    public static void UploadParallel(this CloudBlockBlob blob, string filePath) {
+      FileInfo file = new FileInfo(filePath);
+      //CloudBlockBlob blob = blobContainer.GetBlockBlobReference(file.Name);
+      blob.Properties.ContentType = "application/octet-stream";
+
+      // init
+      int blockSize = 262144;
+      long fileSize = file.Length;
+      long leftToRead = fileSize;
+      int startPosition = 0;
+
+      int blockCount = ((int)Math.Floor((double)(fileSize / blockSize))) + 1;
+      BlockTransferDetail[] transferDetails = new BlockTransferDetail[blockCount];
+      List<string> blockIdList = new List<string>();
+
+      // setup control array
+      for (int j = 0; j < transferDetails.Length; j++) {
+        int toRead = (int)(leftToRead > blockSize ? blockSize : leftToRead);
+        string blockId = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("BlockId{0}", j.ToString("0000000"))));
+        transferDetails[j] = new BlockTransferDetail() { StartPosition = startPosition, BytesToRead = toRead, BlockId = blockId };
+        if (toRead > 0) {
+          blockIdList.Add(blockId);
+        }
+        startPosition += toRead;
+        leftToRead -= toRead;
+      }
+
+      // perform parallel upload
+      var result = Parallel.For(0, transferDetails.Length, j => {
+        using (FileStream fs = new FileStream(file.FullName, FileMode.Open, FileAccess.Read)) {
+          byte[] buffer = new byte[transferDetails[j].BytesToRead];
+          BinaryReader br = new BinaryReader(fs);
+          fs.Seek(transferDetails[j].StartPosition, SeekOrigin.Begin);
+          br.Read(buffer, 0, transferDetails[j].BytesToRead);
+          if (buffer.Length > 0) {
+            using (MemoryStream ms = new MemoryStream(buffer)) {
+              blob.PutBlock(transferDetails[j].BlockId, ms, null);
+            }
+          }
+        }
+      });
+      blob.PutBlockList(blockIdList);
     }
 
Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/Constants.cs
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/Constants.cs	(revision 7562)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/Constants.cs	(revision 7563)
@@ -92,7 +92,13 @@
     public const string DeploymentPackageUrl = "https://hivestorage.blob.core.windows.net/hiveslave/HeuristicLab.Clients.Hive.Slave.Azure.cspkg";
     public const string DeploymentConfigurationUrl = "https://hivestorage.blob.core.windows.net/hiveslave/ServiceConfiguration.Cloud.cscfg";
-    public const string DeploymentConfigurationPath = "files/ServiceConfiguration.Cloud.cscfg";
+
     public const string DeploymentLabel = "HeuristicLab.Hive.Slave";
     public const string DeploymentRoleName = "HeuristicLab.Clients.Hive.Slave.AzureClient";
+
+    public const string DeploymentConfigurationPath = "PackageFiles/ServiceConfiguration.Cloud.cscfg";
+    public const string DeploymentPackagePathSmall = "PackageFiles/HeuristicLab.Clients.Hive.Slave.Azure.Small.cspkg";
+    public const string DeploymentPackagePathMedium = "PackageFiles/HeuristicLab.Clients.Hive.Slave.Azure.Medium.cspkg";
+    public const string DeploymentPackagePathLarge = "PackageFiles/HeuristicLab.Clients.Hive.Slave.Azure.Large.cspkg";
+    public const string DeploymentPackagePathExtraLarge = "PackageFiles/HeuristicLab.Clients.Hive.Slave.Azure.ExtraLarge.cspkg";
 
     #endregion
Index: /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/IAzureProvider.cs
===================================================================
--- /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/IAzureProvider.cs	(revision 7562)
+++ /branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Azure/IAzureProvider.cs	(revision 7563)
@@ -21,4 +21,5 @@
 
 using System.Collections.Generic;
+using System.IO;
 using HeuristicLab.Clients.Hive.CloudManager.Model;
 
@@ -37,4 +38,5 @@
     string CreateDeployment(Subscription subscription, string serviceName, string deploymentName, string deploymentSlot, string packageUrl, string configurationUrl, string label);
     string CreateDeployment(Subscription subscription, string serviceName, string deploymentName, string deploymentSlot, string packageUrl, string configurationUrl, string label, int instanceCount);
+    string CreateDeployment(Subscription subscription, string serviceName, string deploymentName, string deploymentSlot, string packageUrl, FileInfo configuration, string label, int instanceCount);
     string DeleteHostedService(Subscription subscription, string serviceName);
 
