Cloud Foundry Blog

Cloud Foundry Adds PHP and Python Through Community

Cloud Foundry, the industry’s first open platform as a service, has been built from the first line of code to support multiple languages, multiple frameworks, multiple services, and multiple clouds. Today we are announcing two items. First, we are announcing partnerships to provide additional framework abilities to the open source project (multi-framework) and second, we are announcing that these partners will build their own products and services using the Cloud Foundry open source project.

 The Cloud Foundry Community Leads program will bring additional framework support to Cloud Foundry.  Our belief is that working with developers and organizations that are passionate and familiar with particular languages and frameworks is the best way to enable additional language support in the project. The Community Leads program brings domain experts into the community to contribute and maintain specific elements of Cloud Foundry.  We’re delighted to welcome the first two Community Leads who bring two more frameworks into Cloud Foundry.


Welcome Python/Django and 
PHP to Cloudfoundry.org 

ActiveState, a company already counted on by Bloomberg, Boeing and other demanding customers for Python products and support, has contributed Python and Django support for Cloud Foundry. They have also contributed other code related to their experience in creating Stackato, a Cloud Foundry-based enterprise software offering for creating a private PaaS.

PaaS start-up
Appfog (formerly PHP Fog) fresh-off attracting 20k PHP developers and $10M in venture funding this year is contributing PHP as a language to the Cloud Foundry project. They are also launching a new service, Appfog.com, based on the Cloud Foundry open source code, giving them outstanding experience working with both PHP and Cloud Foundry code.

Both companies will provide ongoing updates, direction and community engagement for their respective frameworks. These collaborations demonstrate the power of the Cloud Foundry Open PaaS approach to create a common cloud application platform that can be used by individual, enterprise, and ISV developers. In recognition of their contributions and commitments to the project, both companies have been designated Community Leads, as part of a new program to extend framework support with expert ecosystem partners.

We encourage others building on and with Cloud Foundry to join the conversation around language specific topics, contribute code, and consider becoming an ongoing community lead.

Appfog Launches as a Cloud Foundry based service

After two months of consideration, testing and joint architecture planning Appfog will be launching as a Cloud Foundry based, multi-tenant, hosted service. Their vision is to add value around the Cloud Foundry open source code base, eliminating duplication with best of breed open source functionality and maximizing their focus on additional features, a great UI and support experience. They will also be maintaining vmc client compatibility, so users of other Cloud Foundry services, deployments and micro clouds are only a “vmc target” command away from pushing applications to Appfog.

Get this high velocity PaaS startup’s take on their decision to use and contribute back to Cloud Foundry, and sign up for their beta today.  

ActiveState Chose Cloud Foundry Over IaaS Approach

Several months ago, ActiveState started to build its cloud platform product from scratch. First they experimented with an AMI-based approach, then they tried basing the product on an open source IaaS project. But when Cloud Foundry came out in April, the team decided to switch gears entirely and base Stackato on the Cloud Foundry open source project in order to leverage an application vs. VM centric platform for their target customer: enterprise application developers.  Introduced as developer preview in May, and now in Beta, Stackato is currently available as a VM image for developer testing. Instead of offering a PaaS service, ActiveState’s vision is to target enterprises demanding a private PaaS on top of vSphere. Check out their beta and provide feedback here

Impact on Cloudfoundry.com

As with previous community code contributions such as Erlang these new frameworks will initially only be available in the Cloudfoundry.org project and the products that deploy and manage it.

Don’t have a Cloud Foundry account yet? Signup for free today

-The Cloud Foundry Team

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Email

"We Shrunk the Cloud" – Introducing Micro Cloud Foundry for Developers

We are happy to announce the beta availability of Micro Cloud Foundry™ as a free download at http://micro.cloudfoundry.com

What is in Micro Cloud Foundry?

Micro Cloud Foundry is a complete version of Cloud Foundry that runs in a virtual machine on a developer’s Mac or PC.  It is a full instance of Cloud Foundry that provides the flexibility of local development while preserving your options for future deployment and scaling of your applications.

Micro Cloud Foundry supports Java on Spring, Ruby on Rails/Sinatra and Node.JS frameworks as well as MySQL, MongoDB and Redis application services.  It supports both Cloud Foundry’s scriptable command line interface (vmc) and integration with the Eclipse-based SpringSource Tool Suite (STS). This allows developers to retarget deployments between on-premise and public environments without code modifications.

With built-in dynamic DNS support, developers can run their Micro Cloud Foundry wherever they happen to be working – whether at home, office or coffee shop – without any reconfiguration required.

Micro Cloud Foundry is available as a downloadable virtual machine image compatible with VMware Fusion for MacOSX, VMware Workstation and VMware Player (available as a free download) for Linux and Windows.  It provides an easy install, setup and VM management mechanisms.

How to get Micro Cloud Foundry Set Up & Installed

Pre-requisites

Obtaining Micro Cloud Foundry

First go to http://micro.cloudfoundry.com , login with your CloudFoundry.com account, accept the license agreement and download the VM.

Obtaining your Micro Cloud Foundry DNS Configuration Token

Type in your desired sub-domain name and click “Create”

This will generate a unique DNS token (remember this token, as it will be required when you configure the Micro Cloud Foundry instance).

Running and Configuring your Micro Cloud Foundry

After the download completes, uncompress the archive file containing the VM.

Windows users, please note that the Micro Cloud Foundry image is a *.tgz file and you will need a TAR compatible program to uncompress it.

The archive will contain a directory named “micro” with two files located inside:



Double click the micro.vmx file and VMware Fusion, Workstation, or Player will start and begin booting the Micro Cloud Foundry instance.

If you are prompted to upgrade the virtual machine - CHOOSE “Don’t Upgrade”.

You will then be prompted to configure your Micro Cloud Foundry instance.

Select Option 1 to configure

First, you will be prompted to set the Micro Cloud Foundry VM user password, which will set the password for the ‘root’ and ‘vcap’ users on the VM.  The ‘root’ and ‘vcap’ users are the administrative/control accounts for your Micro Cloud Foundry VM. It can be used to ssh into the VM to diagnose problems.  This is not required for normal Micro Cloud Foundry operations.

You will also be asked to verify the password that you entered.

You will now be prompted to configure the Micro Cloud Foundry networking.
Select 1. DHCP (This is currently the only supported configuration).

You will then be prompted for Proxy information.  If you are behind an HTTP Proxy, you should enter that information here (e.g http://proxy.mycompany.com:3128).

If not, just press Enter to continue.

You will then need to type the DNS configuration token that you received on the page where you downloaded the Micro Cloud VM.

Once the verification and update of the DNS is complete, the Micro Cloud Foundry instance has enough information to complete the installation and configuration process.

Once your Micro Cloud Foundry installation has completed (this may take a few minutes),  press Enter, and you will see the following screen.

This is it! Your Micro Cloud Foundry is ready.

Connecting to your Micro Cloud Foundry

You can now begin using the vmc or STS client by targeting the url displayed on the Micro Cloud Foundry console:

Micro Cloud Foundry operational, to access use:
vmc target http://api.mycloud.cloudfoundry.me

From the command line of your development computer, type

vmc target http://api.mycloud.cloudfoundry.me

Please replace “mycloud” with whatever domain you have chosen for your Micro Cloud Foundry instance.

Logging into Micro Cloud Foundry for the first time

To use the Micro Cloud Foundry instance, you must first register a user.

Using vmc this is done by typing:

vmc register

You will then be prompted to input a username (e-mail address) and a password

Once you have successfully registered, you can log in through vmc or STS using those credentials.

Using vmc this is done by typing:

vmc login

At this point, you are ready to use Micro Cloud Foundry the same way that you would use CloudFoundry.com.

Micro Cloud Foundry offers symmetry with CloudFoundry.com, which means that you can target api.cloudfoundry.com and push the same code that you push to your Micro Cloud Foundry instance.

Micro Cloud Foundry is a developer focused offering, designed to support development and test scenarios.  The power of your machine, will determine how many applications can be run simultaneously.

We will provide frequent Micro Cloud Foundry updates to include additional frameworks, services, and features. Stay tuned on this blog and follow us on Twitter for new announcements.

For further details on how to use Micro Cloud Foundry, please see the following documentation:

Introduction to using Micro Cloud Foundry

Introduction to using Micro Cloud Foundry with Spring STS

-The Cloud Foundry Team

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Email

VMC Everywhere

When we launched Cloud Foundry, we wanted to change the rules of PaaS portability in the cloud . Until then using a PaaS meant being bound tightly to a single provider, often running only a single instance, tied directly the the availability and performance of a single cloud. One of the core tenants of the Cloud Foundry Open PaaS project is ‘multi-cloud’ the ability to run the system on the cloud or infrastructure of your choice, without affecting the developer experience or VMC client interface.

Today we are announcing collaborations with key industry partners, dramatically expanding the integrated tooling for running Cloud Foundry almost anywhere, and delivering on our portability vision.

Canonical: By most measures Ubuntu is one of the leading operating systems in the cloud, including being the core OS powering CloudFoundry.com. Now starting with the 11.10 release both the VMC Client, and VCAP server functionality will be available directly as Ubuntu packages created by Canonical. With over 20 million active desktop users and a strong IaaS server OS popularity it represents an important milestone for the open source distribution of Cloud Foundry, and is just the beginning of an ongoing collaboration with Canonical. Having the VMC client pre-installed and ready on millions of developer desktops makes a Cloud Foundry app deployment just a few commands away for anyone using Ubuntu. To read more about their plans for Cloud Foundry in their Cloud initiative read here.

Dell: Dell has pioneered an approach to automating the installation and configuration of open source cloud software onto bare metal hardware systems with a software framework called Crowbar. Working with Dell, we will be releasing a Crowbar barclamp that will install and configure Cloud Foundry, including multi-node configurations over time, leveraging the open source Crowbar framework. Crowbar can be used to install, maintain, expand, and architect the instance, including BIOS configuration, network discovery, status monitoring, performance data gathering, and alerting. This immediately gives enterprises and service providers, looking to pilot Cloud Foundry, a proven and popular bare metal installation solution. Find out more at Dell Crowbar team member blogs, and stay tuned for future project updates.
Rob Hirschfeld’s Blog
JBGeorge’s Blog
Barton George’s Blog

enStratus: enStratus team has completed work to add Cloud Foundry to their service catalog, enabling Cloud Foundry to be deployed and managed on any of the 18 different clouds they support, as well as any vSphere or vCloud director environments. Both enStratus and Dell Crowbar consume the recently released Chef recipes, created by the Cloud Foundry engineering team for as standard installation scripts for the community. As the recipes are updated service catalog items within enStratus can be immediately upgraded to reflect the latest version. To find out more about the enterprise focused enStratus Cloud Foundry solution start here.

Opscode: In addition to releasing the Chef recipes we created for Cloud Foundry, we have also been working with Opscode, the creator of Chef ( an open-source systems integration framework built specifically for automating the cloud), to publish them on their community site and integrate into Opscode Hosted Chef (OHC) . This means that you will be able to configure and deploy Cloud Foundry to most environments with a single command. We are also working with Opscode to make it easier to build increasingly complex Cloud Foundry topologies on almost any infrastructure with Chef. Expect more information and updates soon.

Through these new open source based collaborations and integrations Cloud Foundry‘s VMC client will now be found pre-built on millions of developer and server operating systems, while Cloud Foundry server will be easily deployed from the top cloud management software products in the world onto any cloud.

These integrations build on our existing work with Rightscale who continues to support deploying Cloud Foundry on EC2.

The community installation and configuration scripts are now also available directly on github, allowing users to build their own deployment code around actively maintained configuration primitives.

We will be hosting a hack day with DTO solutions on September 8th at our campus for those wanting to get some hands on experience with them.

-The Cloud Foundry Team

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Email

RabbitMQ + Cloud Foundry: Cloud Messaging that Just Works

Cloud Foundry™ is the industry’s first open platform as a service. Providing a choice of developer frameworks, application services and deployment clouds, Cloud Foundry simplifies application development and makes it faster and easier to build, test, deploy and scale applications. Cloud Foundry already supports multiple application services including MySQL, MongoDB and Redis. And we are working to add more. 

Today, we are pleased to announce an important milestone: the RabbitMQ messaging service, available today as a free public beta. You can get started right away: on CloudFoundry.com, you will find sample applications and guides. If you create a cool application, please let us know and we’ll link to it. And if you get stuck, tell us what we need to get right. 

Our goal is to make it as easy as possible for you to use messaging to create and connect to cloud applications. This radically simpler portability of applications and integration of services is the essence of Cloud Foundry. To understand what this means for messaging as a service, let’s look at how people use RabbitMQ in the cloud and then see why we think offering RabbitMQ as a service makes sense.

Messaging for the cloud

In the cloud, communication is the design center. 

Messaging is fundamentally a communication technology and therefore a cloud enabler. People talk about “event streams” and “task queues” but the core pattern is “moving a lot of data reliably”. Cloud applications that involve multiple processes or VMs can benefit from a communication centric design. Take a look at this blog post from Union Station for example, and notice that their architecture is not a ‘stack’ but a ‘network’. Or have a look at Google’s design for their Rocksteady monitoring and analytics system. 

You can see this in any development meeting. Increasingly people who build applications ask “how do these components wire together?” and “what’s my event model?” where they used to ask “what’s my database schema and what’s my language platform”. This was always true for “enterprise integration” but now these patterns are needed even for new applications. The applications that are leading the way are also some of the biggest, e.g. near real-time data analytics and activity streams on global scale social and mobile enabled apps. The shift to these design patterns is driving adoption of streaming data services and event based technologies like messaging.

Messaging is essential for successful cloud applications for two reasons. 

First, messaging provides stable communication patterns that scale across multiple network topologies. In the cloud it is critical for applications to cope when networks change or grow. This means that the constituent components of cloud applications cannot be coupled directly. Instead, asynchronous decoupling and indirection based on message brokers is used. These two patterns enable work to be addressed, routed and delivered between components. Those components may be running in one cloud, or several, or on multiple devices e.g. phones. RabbitMQ has a proven track record of moving a lot of data reliably in these scenarios at scale.

Second, because those components are likely to be written in multiple programming languages, it is necessary that communication be “polyglot” and therefore “data centric”. Because of this, people look for a scalable and stable data fabric or communication backbone that can cope with a wide range of client languages, broadcast and load patterns. Messaging systems are designed to be robust with respect to arbitrary traffic conditions, e.g. reliably paging data to disk when consumers go offline. Again, RabbitMQ has the required breadth to deliver on this requirement.

Here are some benefits for cloud applications:

  1. Maintainability: messaging lets you more easily maintain your application without impacting uptime. Decoupling components reduces complexity and simplifies integration. Moreover logging, alerts, reporting and management benefit from a messaging based design.
  2. Scalability: you can improve responsiveness in applications. For instance, messaging lets you separate factor time-consuming processing tasks out of web-facing applications and into a separate tier of worker instances. In addition you can add more of these workers and back end services to achieve scale.
  3. Efficiency: messaging pushes data to users, devices and applications, which is much more efficient than using a database to share information between applications and continually querying for changes. In the cloud, polling is aggravated by variable latency. Pushing data when it changes is more effective.
  4. Robustness: in the cloud, not all components are connected or online at all times. Messaging lets you queue up data for subsequent consumption without fear of losing your data.

What’s next? Simple, Effective Cloud Messaging

Arguably, the success of RabbitMQ thus far has been due to providing a convenient and trustworthy way to get the benefits above, across lots of languages, and with a simple open source license. And certainly this is visible ‘in the cloud’ where RabbitMQ is a top choice both on the main clouds and running some of them under the hood too. One example is NASA’s Nebula cloud, but there are many more.

But there’s one problem – in the age of ‘IT as a service’, not everyone wants to install and look after their own RabbitMQ server. Wouldn’t it be great if management, maintenance, upgrades, rollbacks and all the other potential hindrances to scaling a business… just were taken care of by someone else? In 2011 all this seems obvious and logical to people across all kinds of infrastructure – including customers’ own hardware, behind their own security perimeter. 

The self-service experience is quite natural for messaging, and requests like “I just want a dev queue” or “spin me up ten instances of rabbit” should be part of the cloud. And that means part of the PaaS. So the first step is to provide RabbitMQ as a service for CloudFoundry.com. 

Get Started

Cloud Foundry.com makes it easy to begin using RabbitMQ. If you don’t have a CloudFoundry.com account yet, signup for free today.

In Cloud Foundry, the RabbitMQ server is a service on par with MySQL, MongoDB, and Redis. For instance, you use standard Cloud Foundry vmc commands to create, bind, unbind, clone, and delete RabbitMQ services. 

To learn more about using RabbitMQ on Cloud Foundry, you can use the following resources:

These applications should get you started but you can implement other patterns too. For example, you can use the RabbitMQ service to integrate distinct applications running on Cloud Foundry, even applications built using different languages and frameworks. Or perhaps you could wire RabbitMQ up with another service such as MongoDB. We want people to test the limit of what is possible so that we can stretch it.

The RabbitMQ service lets you implement a full set of essential cloud messaging patterns:

  • Work queues that distribute time-consuming tasks among multiple workers, in order to avoid doing a resource-intensive task immediately and having to wait for it to complete. Work queues let you schedule the task to be done later. This pattern is especially useful in web applications where it’s impossible to handle a complex task during a short HTTP request window. See for example the Celery project.
  • Publish/Subscribe to distribute messages to multiple consumers. This greatly simplifies integration and improves maintainability, since message producers and message consumers don’t need to know about each other. Publishers simply send their messages to an exchange (part of RabbitMQ server), which then looks at properties of the messages to distribute them to the appropriate queues, which are then read by one or more consumers.
  • Routing, to enables message consumers to subscribe only to a subset of the messages.
  • Topics, to do routing based on multiple criteria.
  • Remote Procedure Call (RPC), enabling a software application to run a function on a remote computer and wait for the result.

These core patterns are described in our online tutorials for RabbitMQ and in the Manning book “RabbitMQ in Action”.  For a short introduction to the RabbitMQ AMQP messaging model see here.

If you don’t already have a CloudFoundry.com account, signup here (it’s free).

Background, Pricing and Availability

The RabbitMQ service is now available on www.CloudFoundry.com as a free public beta. It is currently implemented using RabbitMQ server 2.4.1, and can be used by all languages and frameworks that are supported by Cloud Foundry and that have an AMQP 0-8 or 0-9-1 client available, including Ruby on Rails, Ruby Sinatra, Spring Java, and node.js.

RabbitMQ on Cloud Foundry is a cloud-based message broker. This is a type of server software that is used to integrate distinct software systems, by sending and receiving data (in the form of messages) between those systems. These systems can be components of the same application, or part of distinct applications, and can reside on the same machine (physical or virtual), on different machines in the same datacenter, or can be physically remote. 

RabbitMQ stands out among message brokers for several reasons. RabbitMQ scales and is extremely easy for developers to use. As the leading implementation of AMQP, an open-standard messaging protocol, RabbitMQ works with dozens of languages and frameworks that support the Advanced Message Queuing Protocol (AMQP), enabling developers to integrate applications built with completely different technologies, such as a Ruby application that needs to connect to a Java app. These capabilities – performance, usability, and ease of integration — have helped RabbitMQ become a leading choice, growing its popularity to the point where it is included as a standard message broker for major Linux distributions including Ubuntu, Fedora and Debian.

Please try the RabbitMQ service on Cloud Foundry and let us know how we can improve the experience by asking us questions or posting feature requests in our community forums.

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Email

VMware Cloud Application Platform at VMworld 2011 – US

VMworld attendees, come learn about the best platform for running application on vSphere infrastructure.  We have over 20 sessions, labs and panels where you can learn about PaaS, BigData/NoSQL, Cloud Databases, High Performance Computing, Application Management, Cloud Messaging and much more.

Free copy of Micro Cloud Foundry for the first 200 attendees that register for the Cloud Application Platform sessions – register to the sessions now to get yours!

(
Make sure to signup for a CloudFoundry.com account if you don’t have one yet)

Learn from experts, including Cloud Foundry CTO Derek Collison, GemFire/SQLFire Architect Jags Ramnarayan, Elastic Memory for Java lead developer Ben Corrie, and many more.  Below is the list of sessions, labs and group discussions. Please visit the VMworld Content Catalog for up-to-date schedule and registration.

Monday 8/29

  1. A Behind-the-Scenes Tour of VMware’s Hosted PaaS, CloudFoundry.com
    Learn from Cloud Foundry experts Dave McCrory and Martin Englund how CloudFoundry.com, VMware’s Hosted PaaS operates on the backend.
  2. Building Resilient, High Performance, Distributed Application That Are Data Intensive
    vFabric expert Michael Lazar will provide an overview of the challenges to building a scalable, data intensive application that dynamically runs across many machines.

  3. Why Can’t We Be Friends? How RabbitMQ Helps Systems Communicate Better
    Learn from RabbitMQ exper James Williams how VMware’s RabbitMQ technology powers the cloud. We will install, configure and test a multi-node, multi-VM RabbitMQ cluster.

  4. Big Compute and Big (NoSQL) Data Panel
    VMware customers will discuss the ways that Hadoop, SQL & NoSQL Databases are being used to provide computing services to the enterprise for analytics of massive data sets.

  5. Cloud Foundry with Martin Englund
    Join Cloud Foundry developer Martin Englund who will host this best practices group discussion on Cloud Foundry.

Tuesday 8/30

  1. 7 Steps to Enterprise PaaS
    PaaS expert Chris Harris will share lessons learned from delivering actual PaaS instances into customer environments.

  2. Managing High Performance Data with SQLFire
    SQLFire Architect, Jags Ramnarayan will explore SQLFire, a distributed SQL data management solution that melds Apache Derby and an object data grid (vFabric GemFire).

  3. Application Management in a Cloud Environment
    Application Management expert Shahar Erez will discuss how the move towards cloud computing changes in application development approaches and the emergence of DevOps.

  4. Building Hands-on Labs to Model Cloud Application Platform Solutions
    Design and development of Lab Environments tailored to replicate real-world Cloud Application Platforms

  5. Data Strategy of VMware
    We are in the midst of a period of unprecedented explosion of data and active innovations to better manage this explosion.  We are witnessing major trends creating a perfect storm in the data management space: In this session, we will discuss VMware’s data strategy and how VMware will contribute to the innovations in the data management space.

  6. Introducing vFabric Elastic Memory for Java
    Now You Can Share Memory Between Java VMs Without Killing Performance. Learn from lead developer Ben Corrie how vFabric Elastic Memory for Java (EM4J) leverages the new memory sharing interface introduced in vSphere ESX 5.0

  7. Java/JVM best practices with Ben Corrie
    Join EM4J lead developer Ben Corrie for this this best practices group discussion on Java/JVM

  8. Powering Database-as-as-Service for Your Cloud with VMware
    You have experienced the benefits of virtualization, now do you want to fully extend these virtualization benefits to the database layer?  With VMware vSphere as base, we want to show you how you can stand up and operate database-as-a-service in your cloud that drastically simplifies database deployment, operations and availability and in turn, dramatically increase developer agility through self-service database management, improve datacenter efficiency by fully leveraging virtual infrastructure benefits in the database tier
     
  9. Cloud Foundry with Dave McCrory
    Join Cloud Foundry guru Dave McCrory who will host this best practices group discussion on Cloud Foundry.

Wednesday 8/31 

  1. Setup Your Own Private Micro Cloud in 30 Minutes
    Cloud Foundry guru Dave McCrory will show how to have a fully functioning Cloud Foundry Micro Cloud PaaS running on your Laptop/Desktop in less than 30 minutes

  2. Migrating Your Application to the Cloud Foundry Platform – Tips, Tricks, and Gotchas
    Cloud Foundry CTO Derek Collison and expert Dave McCrory will show how to ensure a successful migration of your applications to Cloud Foundry.

  3. Migrating Java Apps from Weblogic to vFabric
    A  case study of migration lifecycle of Java Applications from Weblogic to vFabric: Choices at various steps illustrated through a large project done at VMWare

  4. A Customer Scenario for Next-Generation Data Management with vFabric
    Learn how a leading healthcare customer used VMware’s vFabric GemFire to transform their infrastructure to respond to rapid business changes.

  5. Cloud Foundry with Derek Collison
    Join Cloud Foundry CTO Derek Collison who will host this best practices group discussion on Cloud Foundry

  6. GemFire/SQLFire with Architect Jags Ramnarayan
    Join GemFire/SQLFire Architect Jags Ramnarayan who will host this best practices group discussion on GemFire/SQLFire.

In addition, make sure to visit our theater presentation at the VMware booth.

Looking forward to see you in a few weeks!

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Email