See Molecula live demo on Youtube


We often use emails to communicate with different groups of people. We start new email threads every day and it is difficult to remember all the recipients that we should include in the TO, CC or BCC fields. We spend a lot of time digging into our inbox and finding all the right people from certain groups and adding them to the email. We can easily miss someone if we do this process manually...

Our team members experienced above problem almost every day, which inspired us to create the Molecula - Office 365 Add-In for Outlook. Molecula makes it easier to interact with the people and groups most important to you!

What it does

Molecula indexes all emails in your Inbox and groups all the people you communicated with using special criteria. Groups then are visualized in a form of cool bubbles, where bigger ones represent groups of people you communicated with more frequently. Want to start a new thread? Simply click a bubble, rearrange the recipients for TO, CC and BCC fields and you are done!

How we built it

We use IntelliJ IDEA 15 and Visual Studio Team Services plugin as our primary IDE. Server-side is built using Java and hosted in Microsoft Azure using Docker containers. On the client side we use JavaScript API for Office, Office UI Fabric as a framework for UI and Microsoft Graph API to access user emails.

When we started the project we decided to use git-repo based in Team Services to store our code. In scope of the Java Tools Challenge we started to use Work to plan our iterations as well as the CI Build, Test and Release features of Team Services.

Here is how our development cycle looks like at the moment:

Molecula: Continuous Deployment in Team Services


We are still in the very beginning with the setup of Molecula development cycle. At the moment we use the default Agile template shipped with Team Services. We already have a number of user stories in our backlog which we plan to deliver in the near feature. We split workload into a short iterations up to two weeks long and release in the end of each iteration or more often. We really like Kanban board which helps us to track our work better.

Molecula: Kanban board in Team Services

When particular task is completed Visual Studio Team Services plugin for IntelliJ IDEA helps us to associate the commit with the related work item in Team Services:

Molecula: Using Visual Studio Team Services plugin in IntelliJ IDEA

The whole code for Molecula itself and related projects is stored in the git-repo in Team Service:

Molecula: Code Version Control using git-repo in Team Services

Build, Unit Testing and Deploy to Staging

We use Team Services Builds, Gradle, JUnit and Allure Extension for VSTS for automated builds and unit testing. Whenever a new commit is pushed to the git-repository it will trigger automatic build which also executes unit tests. If they pass the build would automatically deploy a new version of Molecula to the staging server.

Molecula: Code Version Control using git-repo in Team Services

If tests fail Allure Extension for VSTS helps us to better understand the reason why as well as to see linked test cases, so we exactly know what and how to check.

Manual Testing

All the manual testing is done on the staging website. We use test plan created in VSTS to store all our test cases. Because we are a small team we do not use test execution feature yet because all the team members know how to test all the cases. But we still use test plans as a reference, so we remember what we need to check before a new version of Molecula goes to production.

Molecula: Test Cases in Team Services


When we are happy with the results on the staging server we would run our release task manually in Team Service to update the version of Molecula on our production server.

Molecula: Releases in Team Services

Challenges we ran into

1. We could not run TFS build agent on Linux due to this issue. We have managed to workaround the problem, but it would be cool if it would work out of the box.

What's next for Molecula?

In terms of the Dev Ops we are still thinking on whether we want to use Continuous Deployment or Continuous Delivery model. In the near feature we plan to increase the amount of auto test and if we think it would be enough to cover most of the scenarios we would move on and implement Continuous Delivery. Molecula will shortly be published in the Office Store. Taking this into account we may integrate Load Testing as a part of our automated development cycle. We are very positive with what we have got with the Team Services and will definitely use it to make our product more stable, reliable and agile.

Built With

  • devops
  • java
  • team-services
Share this project: