---
title: Apache CloudStack Users
---

<div class="row">

<div class="col-lg-12">

<div class="page-header">

<h1 id="indicators">Apache CloudStack Users</h1>

</div>

</div>

</div>

The following organisations are known users of Apache CloudStack (or a commercial distribution of CloudStack)

Our users include many major service providers running CloudStack to offer public cloud services, product vendors who incorporate or integrate with Cloudstack in their own products, organisations who have used Cloudstack to build their own private clouds, and systems integrators that offer CloudStack related services.

## How to Add your Company in The List

If you are using CloudStack in your organisation and your company is not listed here, please send a pull request to the GitHub [page](https://github.com/apache/cloudstack-www/blob/master/source/users.html.markdown).

## How to Request the Entry Removal or Change

If you noticed something wrong with your entry here (or if you’d like us to remove it), please send a pull request to the GitHub [page](https://github.com/apache/cloudstack-www/blob/master/source/users.html.markdown) or write your concerns to the mail-list **users@cloudstack.apache.org**.

* [ActOnMagic](http://www.actonmagic.com)
* [Appcore](http://www.appcore.com)
* [AxiomIO](http://axiomio.com)
* [Ayaline](http://www.ayaline.com)
* [Itelligence Global Managed Services GmbH](https://itelligencegroup.com/de/trends/cloud-loesungen/)
* [BT](http://btcloud.bt.com)
* [CloudOps](http://www.cloudops.com)
* [Codero](http://www.codero.com)
* [DATACENTER Services](http://www.companycloud.nl)
* [DataCentrix](http://www.datacentrix.co.za)
* [Datapipe](http://www.datapipe.com)
* [DATAWAYS SA](http://www.dataways.gr)
* [Delimiter Corp](https://www.delimiter.com/)
* [En La Nube](http://www.enlanube.com.co)
* [EVRY](https://www.evry.com)
* [Exaserve](http://www.exaserve.com)
* [FiberCloud](http://www.fibercloud.com)
* [FortaCloud](http://www.fortacloud.co)
* [Heinlein Support GmbH](http://www.heinlein-support.de)
* [Imperial College](http://www.imperial.ac.uk/computing)
* [InhouseIT](http://www.inhouseit.com)
* [INRIA](http://inria.fr)
* [Kumo](http://kumo.com.co)
* [M5 Hosting Inc](http://m5cloud.com)
* [Melbourne University](http://nectar.org.au)
* [Miriadis](http://www.miriadis.com)
* [Neobitti](http://neobitti.fi)
* [NetPoint](https://netpoint-dc.com/)
* [Openminds](http://www.openminds.be)
* [Overweb srl](http://stacksquare.com)
* [Polcom](http://polcom.com.pl)
* [Reliable Networks](http://www.reliablenetworks.com)
* [Redbridge](http://www.redbridge.se)
* [SafeSwiss Cloud](https://www.safeswisscloud.ch)
* [HIAG Data AG](https://www.hiagdata.com)
* [SJC Inc](http://www.sjcloud.cn/index.xhtml)
* [Server24](https://www.server24.eu)
* [Telia Latvia](http://www.telia.lv)
* [Tranquil Hosting](http://www.tqhosting.com)
* [Treestle BV](http://www.liquidns.com)
* [Tucha](http://tucha.ua)
* [University of Cologne](http://rrzk.uni-koeln.de/)
* [UPCnet](http://www.upcnet.es)
* [VDI Space, Inc](http://www.vdispace.com)
* [wirenc.com](http://www.wirenc.com)
* [Youngsoft Inc](http://youngsoft.com)
* [Zeromachine](http://zeromachine.net)

* 1 degreenorth
* 5th Planet
* Accudata Systems
* Acentrix
* ActiveEon
* Add Value
* Alcatel-Lucent
* Amdocs
* Amysta
* Angani
* Apalia
* Appcara Inc.
* Appcore
* Appdel
* AppFirst
* Apple
* AppSphere
* Ascenty
* ASG
* AST Modular
* Autodesk
* AXEKA
* Axelaris
* Backbone Technology
* Bechtle AG
* Bell Canada
* BigREDGroup
* British Telecom (BT)
* BT Cloud
* BT Engage IT
* Business Connexion
* CA Technologies
* CANCOM
* Caringo
* Centracon
* CentralWay
* China Telecom
* Citrix Systems
* Clavis IT
* Cloud3
* CloudCentral
* Cloudera
* Cloudian, Inc.
* CloudOps
* Cloudsoft Corporation
* Colt
* COMBIS
* COMLINE Computer + Softwarelösungen
* COMPAREX
* Comping
* Computer Services Group
* Contegix
* Control Circle
* Convergence Group
* CumuLogic, Inc
* Datacentrix
* Datapipe
* DBR360
* Dell
* Digital China Advanced Systems
* Disney
* DU
* e-Contact
* Edmunds.com
* Encloud
* Ennit
* EnterpriseDB
* Entisys Solutions
* EXA Serve
* Exoscale
* Experteq IT Services
* FPG Technologies & Solutions
* Fritz & Macziol
* Fujitsu FIP Corporation
* GigaSpaces Technologies
* Globo.com
* GreenQloud
* Gridstore
* Haaga Helia
* Hillstone Networks, Inc
* Hokkaido University
* Homeaway
* Host.net
* Hostbill
* Huawei
* IDC Frontier
* Ikoula
* IndiQus Technologies
* InMobi
* Interoute
* ISWest
* Janz IT
* Joe’s Cloud Computing
* Juniper Networks
* KDDI
* KIVBF
* KocSistem
* Kommunale Informatoinsverarbeitung Baden-Franken
* KT/Korea Telecom
* Kumo
* Kyuden Infocom
* Kyushu University
* LCS
* LeaseWeb
* Logicworks
* Makro Factory oHG
* MCPc
* Microland Ltd
* MittelstandsCLOUD
* MK Netzdienste
* NAMU Tech
* NEOS
* NetStandard
* Networkers AG
* Nokia
* NTT
* NVision Group
* OpenERP
* Opscode  (now Chef)
* Orange
* OverBright
* Ozona Consulting
* PCextreme
* PosAm
* PPTV
* PromonLogicalis
* Proteus
* Quality Software (Hostbill)
* RealCloud (PKN)
* Redapt
* RedBridge
* RightScale, Inc.
* Royal Melbourne Institute of Technology (RMIT)
* Safe Swiss Cloud
* SAP
* Scalr
* Schuberg Philis
* ScienceLogic, Inc.
* SCSK
* sepago GmbH
* ShapeBlue
* Shopzilla
* Slovak Telekom
* SoftLayer
* SoftwareONE
* SolidFire
* SSI
* StackIQ
* Stratosec
* SunGard AS
* SwiftStack
* SWISS TXT
* Taiwan Mobile
* Targus Technologies
* Tata
* Tendril
* TNTG Limited
* TomTom
* Trader Media Group
* TrendMicro/TCloud Computing
* UniSystems
* University of Melbourne
* University of Sao Paolo
* UShareSoft
* Verio
* Verizon
* Vision Solutions, Inc.
* VMTurbo
* WebMD
* X-IO Technologies
* Xtendsys
* Zajil Telecom
* Zenoss
* Zynga
