Index: /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Business/BillingService.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Business/BillingService.cs	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Business/BillingService.cs	(revision 9586)
@@ -60,4 +60,14 @@
       throw new System.NotImplementedException();
     }
+
+
+    public IList<UsageRecord> GetUsageRecords(string userName) {
+      throw new System.NotImplementedException();
+    }
+
+
+    public IList<Invoice> GetInvoices(string userName) {
+      throw new System.NotImplementedException();
+    }
   }
 }
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Business/BillingServiceProvider.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Business/BillingServiceProvider.cs	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Business/BillingServiceProvider.cs	(revision 9586)
@@ -3,5 +3,5 @@
 namespace HeuristicLab.Services.Optimization.Billing.Business {
   public static class BillingServiceProvider {
-    private static IOptimizationBilling instance = new BillingService();
+    private static IOptimizationBilling instance = new MockupBillingService();
 
     public static IOptimizationBilling Instance {
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Business/MockupBillingService.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Business/MockupBillingService.cs	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Business/MockupBillingService.cs	(revision 9586)
@@ -2,4 +2,5 @@
 using System.Linq;
 using HeuristicLab.Services.Optimization.Billing.Interfaces;
+using System;
 
 namespace HeuristicLab.Services.Optimization.Billing.Business {
@@ -10,9 +11,13 @@
     private static IList<Model.Order> allOrders;
     private static IDictionary<string, Model.User> users;
+    private static IDictionary<string, IList<Model.UsageRecord>> records;
+    private static IDictionary<string, IList<Model.Invoice>> invoices;
     private static long maxId = 1;
 
     static MockupBillingService() {
+      Model.Product oaas;
       products = new List<Model.Product>();
-      products.Add(new Model.Product() {
+
+      products.Add(oaas = new Model.Product() {
         Name = "Optimization-as-a-Service - Experiment execution",
         Description = "Create and run your experiments within HeuristicLab Hive",
@@ -32,4 +37,20 @@
       allOrders = new List<Model.Order>();
       users = new Dictionary<string, Model.User>();
+      records = new Dictionary<string, IList<Model.UsageRecord>>();
+      records["fschoeppl"] = new List<Model.UsageRecord>() {
+        new Model.UsageRecord() { ProductId = 1, Product = oaas, UsageRecordId = 1, User = new Model.User() { Name = "fschoeppl", UserId = 1 }, Begin = DateTime.Now, End = DateTime.Now.AddHours(2), UserId = 1, ResourceIdentifier = 0, ServiceIdentifier = 1 }
+      };
+      invoices = new Dictionary<string, IList<Model.Invoice>>();
+      invoices["fschoeppl"] = new List<Model.Invoice>() {
+        new Model.Invoice() { 
+          Due = DateTime.Now.AddDays(-1), 
+          Status = Model.InvoiceStatus.Overdue,  
+          InvoiceId = 1, OrderId = 1, 
+          InvoiceLines = new List<Model.InvoiceLine>() {
+            new Model.InvoiceLine() { Product = oaas, ProductId = oaas.ProductId, ProductPrice = oaas.Price, Quantity = 2, InvoiceLineId = 1, InvoiceId = 1 }
+          },
+          UserId = 1, User = new Model.User() { UserId = 1, Name = "fschoeppl" }
+        }
+      };
     }
 
@@ -41,5 +62,5 @@
       IList<Model.Order> orders;
       if (!userToOrders.TryGetValue(order.User.Name, out orders)) {
-        userToOrders[order.User.Name] = orders = new List<Model.Order>();        
+        userToOrders[order.User.Name] = orders = new List<Model.Order>();
       }
       var oldOrder = (from o in orders where o.OrderId == order.OrderId select o).FirstOrDefault();
@@ -81,4 +102,22 @@
       users[user.Name] = user;
     }
+
+
+    public IList<Model.UsageRecord> GetUsageRecords(string userName) {
+      IList<Model.UsageRecord> foundRecords;
+      if (records.TryGetValue(userName, out foundRecords)) {
+        return foundRecords;
+      }
+      return null;
+    }
+
+
+    public IList<Model.Invoice> GetInvoices(string userName) {
+      IList<Model.Invoice> foundInvoices;
+      if (invoices.TryGetValue(userName, out foundInvoices)) {
+        return foundInvoices;
+      }
+      return null;
+    }
   }
 }
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Interfaces/IOptimizationBilling.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Interfaces/IOptimizationBilling.cs	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Interfaces/IOptimizationBilling.cs	(revision 9586)
@@ -21,4 +21,7 @@
     User GetUser(string userName);
     void SaveUser(User user);
+
+    IList<UsageRecord> GetUsageRecords(string userName);
+    IList<Invoice> GetInvoices(string userName);
   }
 }
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Model/Model.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Model/Model.cs	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Billing/Model/Model.cs	(revision 9586)
@@ -90,4 +90,8 @@
   }
 
+  public enum InvoiceStatus {
+    Open, Overdue, Paid
+  }
+
   public class Invoice {
     public long InvoiceId { get; set; }
@@ -95,5 +99,5 @@
     public long OrderId { get; set; }
     public DateTime Due { get; set; }
-    public string Status { get; set; }
+    public InvoiceStatus Status { get; set; }
     public string InvoiceDocument { get; set; }
 
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/BaseController.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/BaseController.cs	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/BaseController.cs	(revision 9586)
@@ -34,5 +34,5 @@
           return true;
         }
-        if (orderNecessary)
+        if (orderNecessary && BillingComponent.Enabled)
           return RedirectToCreateOrderIfNecessary();
         return false;
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/InvoiceController.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/InvoiceController.cs	(revision 9586)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/InvoiceController.cs	(revision 9586)
@@ -0,0 +1,34 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Mvc;
+using HeuristicLab.Services.Optimization.Billing.Interfaces;
+using HeuristicLab.Services.Optimization.Billing.Business;
+using HeuristicLab.Services.Optimization.Billing;
+using HeuristicLab.Services.Optimization.Billing.Model;
+using HeuristicLab.Services.Optimization.Web.Models;
+using HeuristicLab.Services.Optimization.Web.Helpers;
+
+namespace HeuristicLab.Services.Optimization.Web.Controllers {
+  [BillingFilterActionAttribute]
+  public class InvoiceController : BaseController {
+    private IOptimizationBilling billing = BillingServiceProvider.Instance;
+
+    //
+    // GET: /Invoice/
+
+    public ActionResult Index() {
+      if (RedirectToLoginIfNecessary("%2fInvoice", false)) {
+        return View();
+      }
+      var invoice = billing.GetInvoices(UserName);
+      return View(new InvoiceModel() {
+         PaidInvoices = (from i in invoice where i.Status == InvoiceStatus.Paid select i).ToList(),
+         OpenInvoices = (from i in invoice where i.Status == InvoiceStatus.Open select i).ToList(),
+         OverdueInvoices = (from i in invoice where i.Status == InvoiceStatus.Overdue select i).ToList()
+      });
+    }
+
+  }
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/OrderAdminController.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/OrderAdminController.cs	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/OrderAdminController.cs	(revision 9586)
@@ -4,7 +4,9 @@
 using HeuristicLab.Services.Optimization.Billing.Interfaces;
 using HeuristicLab.Services.Optimization.Web.Models;
+using HeuristicLab.Services.Optimization.Web.Helpers;
 
 namespace HeuristicLab.Services.Optimization.Web.Controllers {
   [Authorize(Roles = "Web User")]
+  [BillingFilterActionAttribute]
   public class OrderAdminController : Controller {
     private IOptimizationBilling billing = BillingServiceProvider.Instance;
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/OrderController.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/OrderController.cs	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/OrderController.cs	(revision 9586)
@@ -7,7 +7,9 @@
 using HeuristicLab.Services.Optimization.Billing.Model;
 using HeuristicLab.Services.Optimization.Web.Models;
+using HeuristicLab.Services.Optimization.Web.Helpers;
 
 namespace HeuristicLab.Services.Optimization.Web.Controllers {
   [Authorize(Roles = "Web User")]
+  [BillingFilterActionAttribute]
   public class OrderController : BaseController {
     private IOptimizationBilling billing = BillingServiceProvider.Instance;
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/UsageController.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/UsageController.cs	(revision 9586)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Controllers/UsageController.cs	(revision 9586)
@@ -0,0 +1,28 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Mvc;
+using HeuristicLab.Services.Optimization.Billing.Interfaces;
+using HeuristicLab.Services.Optimization.Billing.Business;
+using HeuristicLab.Services.Optimization.Web.Models;
+using HeuristicLab.Services.Optimization.Billing.Model;
+using HeuristicLab.Services.Optimization.Web.Helpers;
+
+namespace HeuristicLab.Services.Optimization.Web.Controllers {
+  [BillingFilterActionAttribute]
+  public class UsageController : BaseController {
+    private IOptimizationBilling billing = BillingServiceProvider.Instance;
+    //
+    // GET: /Usage/
+
+    public ActionResult Index() {
+      if (RedirectToLoginIfNecessary("%2fUsage", false)) {
+        return View();
+      }
+      var records = billing.GetUsageRecords(UserName);
+      return View(new UsageModel() { Records = records != null ? records : new List<UsageRecord>() });
+    }
+
+  }
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Helpers/BillingComponent.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Helpers/BillingComponent.cs	(revision 9586)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Helpers/BillingComponent.cs	(revision 9586)
@@ -0,0 +1,27 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using Microsoft.WindowsAzure.ServiceRuntime;
+using System.Configuration;
+
+namespace HeuristicLab.Services.Optimization.Web.Helpers {
+  public static class BillingComponent {
+    public static bool Enabled {
+      get {
+        try {
+          if (RoleEnvironment.IsAvailable) {
+            return Convert.ToBoolean(RoleEnvironment.GetConfigurationSettingValue("BillingEnabled"));
+          }
+          else {
+            return Convert.ToBoolean(ConfigurationManager.AppSettings["BillingEnabled"]);
+          }
+        }
+        catch (Exception) {
+          // simply disallow billing component if not set
+          return false;
+        }
+      }
+    }
+  }
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Helpers/BillingFilterActionAttribute.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Helpers/BillingFilterActionAttribute.cs	(revision 9586)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Helpers/BillingFilterActionAttribute.cs	(revision 9586)
@@ -0,0 +1,20 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Mvc;
+
+namespace HeuristicLab.Services.Optimization.Web.Helpers {
+  public class BillingFilterActionAttribute : ActionFilterAttribute {
+    public override void OnActionExecuting(ActionExecutingContext filterContext) {
+      var values = filterContext.RequestContext.RouteData.Values;
+      var controller = values["controller"];
+
+      if (!BillingComponent.Enabled) {
+        // don't allow access to controllers with this name
+        filterContext.Result = new HttpStatusCodeResult(404);
+      }
+      base.OnActionExecuting(filterContext);
+    }
+  }
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/HeuristicLab.Services.Optimization.Web.csproj
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/HeuristicLab.Services.Optimization.Web.csproj	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/HeuristicLab.Services.Optimization.Web.csproj	(revision 9586)
@@ -127,10 +127,14 @@
     <Compile Include="Controllers\ExperimentController.cs" />
     <Compile Include="Controllers\HomeController.cs" />
+    <Compile Include="Controllers\InvoiceController.cs" />
     <Compile Include="Controllers\JobController.cs" />
     <Compile Include="Controllers\OrderAdminController.cs" />
     <Compile Include="Controllers\OrderController.cs" />
+    <Compile Include="Controllers\UsageController.cs" />
     <Compile Include="Global.asax.cs">
       <DependentUpon>Global.asax</DependentUpon>
     </Compile>
+    <Compile Include="Helpers\BillingComponent.cs" />
+    <Compile Include="Helpers\BillingFilterActionAttribute.cs" />
     <Compile Include="Helpers\ControllerService.cs" />
     <Compile Include="Helpers\HtmlExtensions.cs" />
@@ -139,4 +143,5 @@
     <Compile Include="Models\AdminModels.cs" />
     <Compile Include="Models\ChartModels.cs" />
+    <Compile Include="Models\InvoiceModel.cs" />
     <Compile Include="Models\OrderAdminModel.cs" />
     <Compile Include="Models\ExperimentModel.cs" />
@@ -144,4 +149,5 @@
     <Compile Include="Models\OrderModel.cs" />
     <Compile Include="Models\StatusModel.cs" />
+    <Compile Include="Models\UsageModel.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="WebRole.cs" />
@@ -400,4 +406,6 @@
     <Content Include="Views\Order\Overview.cshtml" />
     <Content Include="Views\Order\Payment.cshtml" />
+    <Content Include="Views\Usage\Index.cshtml" />
+    <Content Include="Views\Invoice\Index.cshtml" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Models/InvoiceModel.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Models/InvoiceModel.cs	(revision 9586)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Models/InvoiceModel.cs	(revision 9586)
@@ -0,0 +1,13 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using HeuristicLab.Services.Optimization.Billing.Model;
+
+namespace HeuristicLab.Services.Optimization.Web.Models {
+  public class InvoiceModel {
+    public IList<Invoice> PaidInvoices { get; set; }
+    public IList<Invoice> OpenInvoices { get; set; }
+    public IList<Invoice> OverdueInvoices { get; set; }
+  }
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Models/UsageModel.cs
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Models/UsageModel.cs	(revision 9586)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Models/UsageModel.cs	(revision 9586)
@@ -0,0 +1,11 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using HeuristicLab.Services.Optimization.Billing.Model;
+
+namespace HeuristicLab.Services.Optimization.Web.Models {
+  public class UsageModel {
+    public IList<UsageRecord> Records { get; set; }
+  }
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Invoice/Index.cshtml
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Invoice/Index.cshtml	(revision 9586)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Invoice/Index.cshtml	(revision 9586)
@@ -0,0 +1,94 @@
+﻿@model HeuristicLab.Services.Optimization.Web.Models.InvoiceModel
+
+@{
+    ViewBag.Title = "Invoices Overview";
+}
+
+<h2>Your invoices:</h2>
+
+@if (Model.OverdueInvoices.Count > 0) {
+<h3>Overdue Invoices:</h3>
+<table>
+<thead><tr><th>Invoice Id</th><th>Payment</th><th>Payment Due</th><th>Order Id</th><th>Invoice Lines</th></tr></thead>
+<tbody>
+@foreach (var overdueInvoice in Model.OverdueInvoices) {
+    <tr>
+    <td>@overdueInvoice.InvoiceId</td>
+    <td>@((from i in overdueInvoice.InvoiceLines select i.Quantity * i.ProductPrice).Sum()) Euro</td>
+    <td>@overdueInvoice.Due</td>
+    <td>@overdueInvoice.OrderId</td>
+    <td>
+    <table>
+    <thead><tr><th>Invoice Line Id</th><th>Product</th><th>Price</th><th>Quantity</th></tr></thead>
+    <tbody>
+    @foreach (var line in overdueInvoice.InvoiceLines) {
+    <tr>
+    <td>@line.InvoiceLineId</td><td>@line.Product.Name</td><td>@line.ProductPrice Euro</td><td>@line.Quantity</td>
+    </tr>
+    }
+    </tbody>
+    </table>
+    </td>
+    </tr>
+}
+</tbody>
+</table>
+}
+
+@if (Model.OpenInvoices.Count > 0) {
+<h3>Open Invoices:</h3>
+<table>
+<thead><tr><th>Invoice Id</th><th>Payment</th><th>Payment Due</th><th>Order Id</th><th>Invoice Lines</th></tr></thead>
+<tbody>
+@foreach (var openInvoice in Model.OpenInvoices) {
+    <tr>
+    <td>@openInvoice.InvoiceId</td>
+    <td>@((from i in openInvoice.InvoiceLines select i.Quantity * i.ProductPrice).Sum()) Euro</td>
+    <td>@openInvoice.Due</td>
+    <td>@openInvoice.OrderId</td>
+    <td>
+    <table>
+    <thead><tr><th>Invoice Line Id</th><th>Product</th><th>Price</th><th>Quantity</th></tr></thead>
+    <tbody>
+    @foreach (var line in openInvoice.InvoiceLines) {
+    <tr>
+    <td>@line.InvoiceLineId</td><td>@line.Product.Name</td><td>@line.ProductPrice Euro</td><td>@line.Quantity</td>
+    </tr>
+    }
+    </tbody>
+    </table>
+    </td>
+    </tr>
+}
+</tbody>
+</table>
+}
+    
+@if (Model.PaidInvoices.Count > 0) {
+<h3>Paid invoices:</h3>
+<table>
+<thead><tr><th>Invoice Id</th><th>Payment</th><th>Payment Due</th><th>Order Id</th><th>Invoice Lines</th></tr></thead>
+<tbody>
+@foreach (var paidInvoice in Model.PaidInvoices) {
+    <tr>
+    <td>@paidInvoice.InvoiceId</td>
+    <td>@((from i in paidInvoice.InvoiceLines select i.Quantity * i.ProductPrice).Sum()) Euro</td>
+    <td>@paidInvoice.Due</td>
+    <td>@paidInvoice.OrderId</td>
+    <td>
+    <table>
+    <thead><tr><th>Invoice Line Id</th><th>Product</th><th>Price</th><th>Quantity</th></tr></thead>
+    <tbody>
+    @foreach (var line in paidInvoice.InvoiceLines) {
+    <tr>
+    <td>@line.InvoiceLineId</td><td>@line.Product.Name</td><td>@line.ProductPrice Euro</td><td>@line.Quantity</td>
+    </tr>
+    }
+    </tbody>
+    </table>
+    </td>
+    </tr>
+}
+</tbody>
+</table>
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Order/SaveOrder.cshtml
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Order/SaveOrder.cshtml	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Order/SaveOrder.cshtml	(revision 9586)
@@ -28,24 +28,25 @@
 }
 else {
+    <h2>Choose one of your payment options:</h2>
     foreach (var pi in Model.User.PaymentInformation) {
+        <p>
          @Html.Label("PaymentInformationId", string.Format("{0} ({1})", pi.PaymentMethod, pi.CardNumber))
-         @Html.RadioButton("PaymentInformationId", pi.PaymentInformationId);
+         @Html.RadioButton("PaymentInformationId", pi.PaymentInformationId)
+        </p>
     }
-    <h2>Or add payment information by clicking @Html.ActionLink("here", "Payment").</h2>
+    <h3>Or add payment information by clicking @Html.ActionLink("here", "Payment").</h3>
     
     using (Html.BeginForm("SaveOrder", "Order")) {
     <h2>How often would you like to be billed?</h2>
-
+    <p>
     @Html.RadioButtonForEnum(m => m.BillingPeriod)
-
+    </p>
     <h2>Would you like to pay upfront or at the end of the period?</h2>
-
+    <p>
     @Html.RadioButtonForEnum(m => m.BillingType)
-     
-     <div>
+    </p>
      <p>
         <input type="submit" value="Save order" />
     </p>
-    </div>
 }
 }
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Shared/_Layout.cshtml
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Shared/_Layout.cshtml	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Shared/_Layout.cshtml	(revision 9586)
@@ -1,3 +1,4 @@
-﻿<!DOCTYPE html>
+﻿@using HeuristicLab.Services.Optimization.Web.Helpers
+<!DOCTYPE html>
 <html>
 <head>
@@ -62,9 +63,13 @@
         <div id="master-mainmenu">
             <ul id="menu">
-                <li>@Html.ActionLink("Home", "Index", "Home")</li>
-                <li>@Html.ActionLink("Experiment", "Index", "Experiment")</li>          
-                <li>@Html.ActionLink("Orders", "Overview", "Order")</li>      
-                <li>@Html.ActionLink("Admin", "Index", "Admin")</li>                
+                <li>@Html.ActionLink("Home", "Index", "Home")</li>                            
+                <li>@Html.ActionLink("Experiment", "Index", "Experiment")</li>
+                <li>@Html.ActionLink("Experiment Administrator", "Index", "Admin")</li>    
+                @if (BillingComponent.Enabled) {          
+                <li>@Html.ActionLink("My Orders", "Overview", "Order")</li>      
+                <li>@Html.ActionLink("My Usages", "Index", "Usage")</li>
+                <li>@Html.ActionLink("My Invoices", "Index", "Invoice")</li>                                
                 <li>@Html.ActionLink("Order Administration", "Index", "OrderAdmin")</li>                
+                }
                 <li>@Html.ActionLink("About", "About", "Home")</li>
             </ul>
Index: /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Usage/Index.cshtml
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Usage/Index.cshtml	(revision 9586)
+++ /branches/OaaS/HeuristicLab.Services.Optimization.Web/Views/Usage/Index.cshtml	(revision 9586)
@@ -0,0 +1,25 @@
+﻿@model HeuristicLab.Services.Optimization.Web.Models.UsageModel
+
+@{
+    ViewBag.Title = "Usage statistics";
+}
+
+<h2>Your usage records:</h2>
+
+@if (Model.Records.Count == 0) {
+    <h3>You don't have any records yet.</h3>
+}
+else {
+<table>
+<thead>
+<tr><th>Record Id</th><th>Product</th><th>Service Identifier</th><th>Resource Identifier</th><th>Begin of usage</th><th>End of usage</th><th>Duration</th></tr>
+</thead>
+<tbody>
+@foreach (var record in Model.Records) {
+    <tr>
+    <td>@record.UsageRecordId</td><td>@record.Product.Name</td><td>@record.ServiceIdentifier</td><td>@record.ResourceIdentifier</td><td>@record.Begin</td><td>@record.End</td><td>@(record.End - record.Begin)</td>
+    </tr>
+}
+</tbody>
+</table>
+}
Index: /branches/OaaS/HeuristicLab.Services.Optimization/ServiceDefinition.build.csdef
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization/ServiceDefinition.build.csdef	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization/ServiceDefinition.build.csdef	(revision 9586)
@@ -32,4 +32,5 @@
       <Setting name="HiveEndpointName" />
       <Setting name="ControllerEndpointName" />
+      <Setting name="BillingEnabled" />
     </ConfigurationSettings>
   </WebRole>
Index: /branches/OaaS/HeuristicLab.Services.Optimization/ServiceDefinition.csdef
===================================================================
--- /branches/OaaS/HeuristicLab.Services.Optimization/ServiceDefinition.csdef	(revision 9585)
+++ /branches/OaaS/HeuristicLab.Services.Optimization/ServiceDefinition.csdef	(revision 9586)
@@ -23,4 +23,5 @@
       <Setting name="HiveEndpointName" />
       <Setting name="ControllerEndpointName" />
+      <Setting name="BillingEnabled" />
     </ConfigurationSettings>
   </WebRole>
