1545242400 <![CDATA[Blog]]> /blog english nigel@newverveconsulting.com Copyright 2018 2018-12-19T18:00:00+00:00 <![CDATA[Why we joined the Scottish Business Pledge]]> https://www.newverveconsulting.com/blog/why-we-joined-the-scottish-business-pledge https://www.newverveconsulting.com/blog/why-we-joined-the-scottish-business-pledge#When:18:00:00Z

​The Scottish Business Pledge is a voluntary commitment made by Scottish businesses to promote fair employment practices and boost productivity. As a business, we strongly believe in the values upon which the pledge is built and are delighted to do our part in promoting this initiative.

Each of the 9 pledges contributes to a stronger and more balanced landscape in Scotland, and we’d encourage every business to also make the pledge:

  1. Paying the living wage
  2. Not using exploitative zero hours contracts
  3. Supporting progressive workforce engagement
  4. Investing in Youth
  5. Making progress on diversity and gender balance
  6. Committing to an innovation programme
  7. Pursuing international business opportunities
  8. Playing an active role in the community
  9. Committing to prompt payment

As a small and growing business, I feel it’s important to lay great foundations for the future - both for us and for Scottish business in general. I’m proud to say that New Verve already enacts 7 out of the 9 pledges.

Like many other tech businesses, we fall short on gender balance. As we scale over the coming couple of years, this is a key area that we will address. Ultimately, diversity and inclusion are crucial factors to building a more balanced business and culture within it.

We’re also considering numerous ways to play a more active role in our community in West Dunbartonshire. One of these is Pledge 1%, a movement of corporate philanthropy, which involves committing 1% of equity, profit, product, and/or employee time for their communities. It’s spearheaded by Salesforce, Atlassian, and many other big names in our industry.

Find out more

Check out the Scottish Business Pledge website for more information.

The pledge wall illustrates the range of businesses that have already made their commitment to a fairer Scotland.

]]>
2018-12-19T18:00:00+00:00
<![CDATA[How we moved Crowd user management to a centralized cloud directory]]> https://www.newverveconsulting.com/blog/how-we-moved-crowd-user-management-to-a-centralized-cloud-directory https://www.newverveconsulting.com/blog/how-we-moved-crowd-user-management-to-a-centralized-cloud-directory#When:10:58:00Z A common problem experienced by Atlassian Server administrators using Atlassian Crowd for user directory management is that Jira Service Desk (JSD) customers must exist as Crowd users, while the Crowd Single Sign On (SSO) is used across the application stack.

This can lead to a large number of licensed Crowd users, ultimately resulting in unnecessary business costs. Additionally, a Crowd Server user directory introduces a single point of failure when combined with SSO, if the Crowd Server is unreachable then authentication is impossible for any application that uses Crowd.

So, how did we go about solving this problem at New Verve?

Requirements

First, we captured our requirements. We needed:

  1. a centralized cloud user directory that could be used for more services than just our Atlassian stack of applications
  2. to reduce costs for our Crowd license (and handle Jira Service Desk customers elsewhere)
  3. implement Single Sign-On (SSO) across all applications
  4. the ability to enforce Two Factor Authentication (2FA) at application login

Possible solutions

To avoid storing Jira Service Desk customers in Crowd (and hence reduce the license cost), we first considered using a modified Seraph Connector which could default back to Jira’s home directory. However, this approach introduces technical overhead, as you would either have to rely on an open source implementation which has not been actively maintained, or develop your own custom Seraph Connector.

In the end, we opted for a more comprehensive solution that could deliver on all of our requirements.

Centralized cloud directory

There are many SaaS user directory services available, offering similar functionality. The ones we considered were:

Feature Comparison

Google SSO

GSuite customers can create SAML SSO Applications free-of-charge, which can be used by any licensed GSuite users. However, GSuite does not offer an LDAP service, although it is possible to synchronise GSuite and JumpCloud, with JumpCloud providing LDAP access.

JumpCloud

JumpCloud offers a range of different user directories, including LDAP and SAML based single sign-on. There are different user tiers available, offering different functionality at a range of per-user prices.

OneLogin

OneLogin offers a huge list of features, most of which were not part of our requirements. The custom branding functionality is very interesting though, compared to say JumpCloud where you are currently unable to customise the login experience. There are different user tiers available, offering different functionality at a range of per-user prices. Each tier offers LDAP as an add-on, priced at an additional €2/user/month.

Okta

While Okta offers a huge range of features in different tiers, but the SSO tier met all of our requirements at a reasonable price per user. They’re also used by some big names, including Experian and Adobe.

SSO

As we cannot use additional user directories in combination with Crowd’s SSO connector, we could have decided to remove SSO all together, authenticating each application separately. This is a pain though, as each user would then have to authenticate with each application.

There are numerous SSO apps available on the Atlassian Marketplace which provide similar functionality to the Crowd SSO connector, but allowing the use of multiple internal and external user directories.

Example marketplace apps:

2FA

While planning our migration of the Crowd user directory to the Jira User Server and an External User Directory, we looked into solutions for enforcing Two Factor Authentication (2FA) for our staff members, so that we could add an additional authentication requirement to user logins.

Sadly, there is no out-of-the-box functionality provided by Atlassian for 2FA. While add-ons do exist on the Market Place to provide 2FA, we chose to include the 2FA enforcement in the requirements for the external user directory.

Our chosen solution

We chose JumpCloud as our centralized user directory, as it provides all the functionality we need to meet our requirements (SAML SSO, 2FA) as well as providing authentication for desktop PCs and a wide range of other features. In addition to this, we currently sit in the free tier due to our user number requirements.

We made the internal decision to phase out Crowd usage, in favour of moving to a Jira provided user server. This allows us to create as many JSD customers as is required, without exceeding our Jira user licence limits. Migrating from Crowd Server to Jira’s User Server does not solve the single-point-of-failure that exists when centralising all application access in a single Server application instance. To mitigate this single-point-of-failure for company accounts, we decided it was best to introduce a secondary user directory for staff use, and to store customer accounts within Jira’s User Server.

For SSO, we opted for Resolution‘s SAML Single Sign-On apps, available for all Atlassian Server products. We found that the SSO options all provided a similar set of core functionality and vary mostly in user interface. Some add-ons offer Kerberos support, but this was not something we required.

To roll out our chosen solution, we had a couple of challenges:

  • first, we had to migrate from Crowd and then retire it;
  • then, we needed to figure out a way of enforcing 2FA for employees but not customers (this was a medium-term business requirement).

Configuring JumpCloud with Resolution’s SAML app

We followed Resolution’s guide to setting up a generic SAML provider.

At this stage we realised that JumpCloud only supports a single Entity URL, meaning that each Atlassian application had to have its own JumpCloud SAML Application configured and integrated, which took more time than a single Entity.

Staff user directory

We hooked up our Atlassian applications to JumpCloud for user directory management using JumpCloud’s LDAP-as-a-service.

This is a standard OpenLDAP configuration that was applied to Jira, Confluence, Bitbucket and Bamboo following this guide. We discovered that JumpCloud does not at the time of writing support nested groups, which meant they had to be disabled across all of Jira’s user base.

This is something we hope JumpCloud implements soon, as nested groups make user management a more streamlined process.

Migrating customers from Crowd to Jira

We had a few options in migrating our existing Crowd users over to Jira’s internal user directory. These included directly migrating via database queries, exporting users to CSV and importing into Jira or using an add-on from the Atlassian marketplace.

After evaluating a few options, we decided that TechTime’s User Management for Jira was the bit fit for our needs. It supports bulk migration of users between user directories, as well as a lot of other useful features.

The only caveat we discovered was that passwords would have to be reset for each user. Currently Jira doesn’t allow bulk password resets to be sent out, so we had to notify each customer to reset their password through the standard Jira forgotten login form.

Enforcing SAML SSO

Now that our employee accounts are migrated to JumpCloud’s active directory, using SAML SSO for sign on with 2FA, we needed to enforce the usage of JumpCloud sign on. This was performed by using Resolution’s DenyPasswordAuthenticator Seraph connector - which needed to be installed to the lib directory in the installation directory for each application. We had to then create the allowed-password-login group within Jira, and add all non-employee accounts to this group so that customers could still sign on using Jira’s standard login, but employees would have to use JumpCloud with 2FA.

As we’re enforcing SAML SSO for employees only, we needed a way to automate adding customers to the allow-password-login group, as this would have to be a manual step on user creation, including for Service Desk customers. To handle this, we wrote a Groovy script and set this up as a custom listener using ScriptRunner for Jira Server, triggered by the UserCreatedEvent. Once a new user has been created, the script checks their email address to make sure it doesn’t match one of our internal domains (@newverve). If no match is found, then they are added into the allow-password-login group.

 
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.crowd.event.user.UserCreatedEvent 
import com.atlassian.jira.user.util.UserUtil
import com.atlassian.jira.security.groups.GroupManager
import com.atlassian.jira.user.util.UserManager
import com.atlassian.jira.user.ApplicationUsers
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.util.ErrorCollection
import com.atlassian.jira.util.SimpleErrorCollection

// Settings
String AdminUser = "sysadmin" //User with admin rights
String defaultGroup = "allow-password-login"
String emailFilter = "@newverve"

// Get manager components
UserManager userManager = ComponentAccessor.getComponent(UserManager)
GroupManager groupManager = ComponentAccessor.getComponent(GroupManager)
UserUtil userUtil = ComponentAccessor.getComponent(UserUtil)

// Run as a system admin
ApplicationUser adminApplicationUser = userManager.getUserByName("${AdminUser}")
ComponentAccessor.getJiraAuthenticationContext().setLoggedInUser(adminApplicationUser)


// Retrieve event and user details
def event = event as UserCreatedEvent
def eventUser = event.user
def eventUserEmail = eventUser.getEmailAddress()
def appUser = userManager.getUserByKey(ApplicationUsers.getKeyFor(event.user))

log.info event

// Check filter, exit if match found
if (eventUserEmail.contains(emailFilter)) {
    log.info "User ${appUser} has an email (${eventUserEmail}) containing filter ${emailFilter}, skipping"
    exit(0)
}

// Get user and group
def gname = groupManager.getGroup(defaultGroup)

log.info "User: ${appUser}"
userUtil.addUserToGroup(gname, appUser) //Adds the user to the above group
log.info "User ${appUser} has been added to group ${defaultGroup}"
]]>
2018-12-05T10:58:00+00:00
<![CDATA[A perfect Asset Management Solution?]]> https://www.newverveconsulting.com/blog/a-perfect-asset-management-solution https://www.newverveconsulting.com/blog/a-perfect-asset-management-solution#When:19:19:00Z ​What is Insight?

Insight is an Asset Management Tool Created by Riada which is available from the Atlassian Marketplace for Jira Server and Data Center.

This tool fully integrates within Jira to provide a smooth and logical user interface that gracefully blends the worlds of Jira issue management and asset management.

While Jira can be used to house asset related information natively, the results could end up less than satisfactory (Issues filled to the brim with constantly updated custom fields, issues being lost due to incorrectly mapped workflows, etc.).

What can Insight do?

Insight can be a powerful tool if you understand how to use it.

Not only does it give you the ability to sort and log assets in a central repository, such as hardware, software licenses, and even office keys, it also allows you to link each item into a visual web based on underlying relationships and dependencies.



This kind of view provides a better understanding of how objects interact with each other and a greater sense of total system thinking!

What is better is that Insight objects can be attributed to Jira issues so that the users involved can see the exact objects you are referencing and all of their associated data!



Why do we use Insight?

Insight provides us with an easy and visual way to keep track of all of the information associated with the business. It acts as a single source of truth.

Before Insight was included in our toolbox we used to document everything in unstructured, static Confluence pages. Insight wins because it centralises our data in a structured and easily accessible way.

With our legacy approach in Confluence, we ended up with fragmented documentation with legacy and forgotten about content. The support team would often come across incorrect information and it was unclear where it should be updated.

With our new approach using Insight, rather than relying on potentially stagnant content, we now use the Insight macro in Confluence which ensures the team has access to the most up-to-date information.



For service delivery, we use Insight every day. An object picker is included within our Jira Service Desk requests, enabling team members to select an affected piece of equipment..



A support agent working on the ticket can easily see exactly which piece of equipment is affected, along with its meta-data and all other tickets that reference the object. This makes support tickets much more precise and cuts down on duplicated work.







We also use Insight to automatically pull in meta-data from Amazon Web Services which we use for much of our managed services infrastructure. Customers that use New Verve to host their Atlassian server software have their data linked to client projects in Jira, enabling us to closely monitor the services we provide.

Watch out for a further blog post on this topic!

Potential use cases

Apart from the obvious ‘IT assets’ use case, there are many other ways that you can take advantage of Insight:

  • employee onboarding
  • leave management
  • software release management
  • legal assets

When combined with Jira Service Desk for request management, the possibilities are endless!

Summing up

All in all, it’s great to have an off-the-shelf solution from Riada that we could integrate closely into our daily operations.

While we could function without it, we are much better off now with improved service delivery, more automation, and ultimately less cost.

Need more information?

If you need to find a Jira integrated solution for your asset management troubles, why not give Insight a try?

Get in touch with one of our consultants for a free demo and we can help map your requirements to the tool!

]]>
2018-11-08T19:19:00+00:00
<![CDATA[Atlas Camp 2018]]> https://www.newverveconsulting.com/blog/atlas-camp-2018 https://www.newverveconsulting.com/blog/atlas-camp-2018#When:15:23:00Z

That’s a wrap for Atlas Camp 2018!

For those that do not know, Atlas Camp is Atlassian’s annual developer event. It’s a time when fellow developers of the Atlassian ecosystem meet up and are able to attend talks from Atlassian’s own developers or from app vendors to share tips and tricks with the community.

Atlas Camp took place again after Summit in Barcelona this year, and after attending for the first time, we thought we’d share some insights!

The biggest announcements in this year’s developer update were focused around Cloud and Data Center. As with the EU summit, there is a big push for scalability, especially with Atlassian’s own Jira Cloud offering. They want apps to work cross product, so that that users have less start/stop and less friction when sharing work.

Data Center approved apps

For Data Center, there was a big focus on the new Data Center Approved Apps programme.

The aim of the programme is to guarantee stability of apps for enterprise-sized users, where high availability and performance at scale are must-have requirements. The programme requires app developers to rigorously test their apps to prove they can scale well with Data Center. Find out more about what’s involved here.

Empowering users

For Cloud, the main message was ‘empowering users’.

Users will soon get a brand new in-product marketplace in Cloud with improved UX and more entry points in Jira and Confluence, enabling them to more easily discover apps that fulfil their specific needs.

In the near future, we’ll see a wave of apps that empower end-users to customize their own experience. Atlassian’s vision focused on ‘personal integrations’, which will solve the problem of users jumping between multiple app contexts (e.g. Slack, Gmail, WhatsApp etc.). A great proof of concept presented at Atlas Camp is the new Atlassian Cloud for Gmail app, which is an add-on installed within Gmail, enabling users to see information from Jira and Bitbucket and take actions in-context, without leaving their inboxes.

The enabling technology for developers is OAuth 2.0 (three-legged OAuth or ‘3LO’) which allows external applications and services to access Atlassian product APIs on a user’s behalf. Read more here.

Catch up on sessions

To check out more exciting content, you can go to the official Atlas Camp website where they have uploaded many of the sessions for you to rewatch.

]]>
2018-09-18T15:23:00+00:00
<![CDATA[The biggest announcements from Atlassian Summit 2018]]> https://www.newverveconsulting.com/blog/the-biggest-announcements-from-atlassian-summit-2018 https://www.newverveconsulting.com/blog/the-biggest-announcements-from-atlassian-summit-2018#When:10:17:00Z We’ve just returned from sunny Barcelona, having sponsored and exhibited at Atlassian Summit for the first time.

As usual, the event was jam-packed with a tonne of inspiring sessions across 2 days. You can watch all the recorded sessions here.

The expo floor was also a hive of activity, with a diverse set of partners and Marketplace vendors showing off their wares. We thoroughly enjoyed speaking with fellow exhibitors and returned to Glasgow refreshed and inspired.

I say refreshed, but Atlassian’s biggest party of the year, Summit Bash, left us nursing sore heads for a while after smile

Tartan Partners

Since we are the only Atlassian Solution Partner from Scotland, we thought we’d make a statement this year, and donned kilts for the entire event. The kilts were so popular that we hereby promise that we’ll do the same every year from now on!

Check out more of our photos on Twitter via the hashtag #tartanpartners.

OpsGenie

The first big announcement in Atlassian’s keynote was the acquisition of OpsGenie, a leader in incident management and alerting software.

Until the acquisition is fully closed, we can’t offer much insight at this stage, but we’re expecting tight integrations between OpsGenie and the likes of Statuspage and Jira Ops (see below).

Jira Ops

Following the same theme in IT Operations, Atlassian also announced a brand new cloud product: Jira Ops. It’s free to try until early 2019.

Inspired by the DevOps movement, Jira Ops serves as an ‘incident command centre’, giving IT operations teams a central place to track and manage incidents during their lifetime.

We’re not yet fully up to speed on all of Jira Ops features, but it seems that its true value will come from integrations with other tools such as Slack, Statuspage, Jira Service Desk, and of course the newly acquired OpsGenie.

Cloud

It’s clear that Atlassian is continuing to heavily invest in Atlassian Cloud and not surprisingly.

More than 70% of Atlassian’s customers are now using cloud products, and this number will surely continue to grow quickly. It’s no surprise that the biggest announcement was an increased user limit for Jira and Confluence, from 2,000 to 5,000 users.

Some new integrations were also announced: firstly between Bitbucket Pipelines and Jira Software and secondly between Slack and Confluence.

User experience is continuing to evolve with announcements across most products:

  • a completely redesigned UX for pull requests in Bitbucket;
  • a new look and feel for Jira Service Desk;
  • a simpler editing experience in Confluence, with optimized layouts, in-context toolbars, and new templates.

And it looks like Jira issues in general have a revamp in the pipeline, with inspiration taken from the bento box. Information will be displayed neatly, logically, and beautifully!

Server and Data Center

The spotlight was certainly on Atlassian Cloud at Summit, however, there were lots of announcements and breakout sessions for Server and DC.

Atlassian’s Cloud and Server roadmaps are distinct, meaning that each audience will get features tailored to them. And the new features are driven by feedback directly through the public issue tracker JAC. It’s nice to see heavily voted features finally coming to fruition!

First up: Jira 8.0! It brings with it super fast agile boards, batch email notifications (this is our favourite!), custom email notifications to reduce noise, and a native mobile app.

For Jira Service Desk, server customers will soon be able to customize their portal. If you have fairly simple branding requirements, this will more than suffice without needing to purchase a theming plugin such as Refined Theme.

We were also impressed with the new search experience coming in Confluence with faster UX and better filtering. Here’s a mobile snap from the keynote to give you a flavour:

Beyond Confluence and Jira, there were some other product announcements:

  • upcoming code insights integrations in Bamboo;
  • delegated management of groups to non global admins in Crowd;
  • new functionality in Portfolio for Jira to make it easier to plan across teams of teams.

There’s an upcoming Atlassian webinar which will go into some more detail about these new features for Server. Register here!

Other titbits

We can’t squeeze everything into a single blog article, so we’ll try to get some other useful content up on the blog in the coming weeks.

In the meantime, some other useful titbits to check out:

  • the new Atlassian Incident Handbook, a summary of Atlassian’s incident management process;
  • the first ever Trello Day took place this year! Check out the session videos here!
]]>
2018-09-10T10:17:00+00:00
<![CDATA[Building a data pipeline for eazyBI reports]]> https://www.newverveconsulting.com/blog/building-a-data-pipeline-for-eazybi-reports https://www.newverveconsulting.com/blog/building-a-data-pipeline-for-eazybi-reports#When:15:04:00Z A few weeks ago, we were thrilled to be invited to speak at eazyBI Community Days 2018.

We had a blast meeting fellow Atlassian Partners, vendors, and customers from around the world, as well as sightseeing the beautiful host city of Riga, Latvia. We heartily recommend next year’s installment of Community Days to anyone interested in implementing advanced reporting and gathering business intelligence in Jira, using eazyBI’s excellent Reports and Charts add-on.

For those of you who missed this event, you can watch our talk on YouTube.

In this article, we would like to expand upon the ideas covered in our talk, and demonstrate some of the technical ins & outs of building a data pipeline for eazyBI reports.

The Data

The typical use case for the eazyBI add-on is to provide business intelligence based on project & issue data imported from Jira. However, eazyBI also includes a REST API connector, enabling data imports from virtually any source, provided the data:

  • can be consumed over a REST endpoint; and
  • can be served in a JSON, XML, or CSV representation.

This opens up a myriad of possibilities for providing Jira users with integrated reports on performance figures across the wider business. Crucially, it also leaves you - the solution architect - with two key considerations:

  • the volume of stored data, and
  • the volume of processed data.

The Why

You will quickly notice that, while you can compensate for the volume of stored data by throwing more/better hardware at the problem, you may not necessarily be able to do so with the data processed by eazyBI. This is chiefly the case when:

  • the data you are reporting on does not in itself contain the required metrics; and
  • the metrics themselves require a non-trivial amount of computation.

Our recommended solution to this problem is pre-processing the data prior to importing it into eazyBI.

The Dos & Don’ts

When and when not to pre-process?

Our rule of thumb is: leverage the power of eazyBI’s calculated members as much as possible; pre-process only when not doing so would negatively impact on the user experience.

If you have previously deferred to spreadsheets for reporting purposes, you may be used to scrolling around multiple complicated tables, each filled with complex formulas and cross-references, all working overtime to present you with desired results.

In many cases, attempting to recreate this model in eazyBI goes against the spirit of its design.

  • The add-on is a web application, subject to the same limitations and considerations as any app or website whose job is to render data in a performant and accessible manner inside a web browser’s window.
  • The data itself is stored in a multi-dimensional OLAP cube, updated and expanded at regular intervals. This makes it more suitable for “dynamic reporting”, where figures and metrics are extracted from the cube in the form of a query, and the results rendered on-screen in a format according to need.

Of course, keeping the above considerations in mind is no guarantee for smooth sailing.

Sometimes, you might want to have a comprehensive all-in-one-place view of a specific data subset and assorted metrics; other times, computing complex metrics on-the-fly using calculated members may lead to browser timeouts even for a relatively narrow view of the data. In both scenarios, you can ease the computational burden on eazyBI by pre-computing the desired metrics in advance.

The How

To demonstrate this on a practical example, we will show you how to build a cached data pipeline using a number of Jira apps we know & love.

  • We will use the Tempo suite as our data source. Tempo provides us with a set of add-ons to capture workload management, planning, and budgeting information within Jira. Some of its data is available in eazyBI directly using the Jira application import functionality; however, getting our hands on most of the data requires the use of the REST API import in eazyBI.
  • We will use Adaptavist ScriptRunner for Jira as our processing engine. ScriptRunner enables us to extend, customize, and automate Jira with purpose-built scripts written in the Groovy programming language, leveraging any available Java and REST interfaces.
  • And of course, we will use eazyBI Reports and Charts for Jira for our business intelligence reporting solution!

The Source

Our data source will consist of financial portfolio metadata as provided by the Tempo Budgets app. In Tempo Budgets, Jira project cost & revenue information is stored inside corresponding project folios. To help define our data domain, let’s ask:

  1. where should we get our data from; and
  2. what metrics would we like to report on?

Figures

Let’s suppose our users would like the following figures and assorted metadata pulled into a consolidated eazyBI report:

  • Folio name
  • Parent portfolio name
  • Start & end date
  • Quoted Days (a folio custom field)

Metrics

Let’s further assume that there is a need to report on the following calculated metrics.

  • Planned Days, defined as the planned staff effort within the folio time frame.
  • Actual Days, defined as the sum total of days worked to date by the folio staff within the folio time frame.
  • Remaining Days, i.e. the sum total of remaining time estimates across all unresolved issues in the folio scope.
  • Total Days, i.e. the sum total of original time estimates across all issues in the folio scope.

The Engine

Now that we have defined our data domain, how do we get the data out of Tempo Budgets and pre-process it in a format suitable for eazyBI?

In order to compute the metrics and present all this data to eazyBI in a single data source, we must create our own API endpoint to serve the data over.

Inputs

No single screen in the Tempo Budgets UI gives us the information we need in a consolidated manner: we will therefore need to dig a little deeper in order to get our hands on the data. This is where REST API calls come into play.

Tempo Budgets provides official documentation for supported API calls. We can use the following calls to retrieve desired folio figures and metadata:

At the time of this writing, the public API does not provide direct access to any of our calculated metrics. This is of course fully expected, as we have defined these metrics ourselves. However, we can get our hands on the underlying data in another manner, by utilising private API calls.

Note that whether private or experimental, non-public APIs are subject to change. We advise exercising caution when using these as part of your solution, keeping in mind any eventual maintenance implications.

There are a couple of ways to discover undocumented calls:

See below for an example of what a private REST API call to the Tempo back-end looks like in the Google Chrome DevTools, with the REST endpoint highlighted in blue on the right-hand side panel.

In our case, the relevant API calls are:

  • /rest/tempo-planning/1/folio/{folioId}/overview
  • /rest/tempo-planning/1/team/planningStatus/{folioId}
  • /rest/tempo-planning/1/team/worklogs/{folioId}

Outputs

Adaptavist ScriptRunner for Jira provides us with the facilities to create scripted services and custom REST endpoints. Backed by purpose-written Groovy scripts, these will allow us to:

  • pre-process all required data on our own schedule; and
  • cache it for subsequent import into eazyBI.

For small data sets, we would not expect to have to pre-process our data in advance: we would simply do so on-the-fly inside our custom endpoint, and use that endpoint to import data into eazyBI in one fell swoop.

However, since our data domain may be relatively large, doing so would only lead to API timeouts, with eazyBI waiting for all the data to be processed. This consideration is especially relevant when building reports which track data over time, where the size of the data domain is multiplied by the granularity of the time dimension.

Service

Our scripted service will do the heavy lifting, performing the following operations:

  • retrieving relevant data from Tempo Budgets;
  • calculating additional metrics;
  • storing the results in a format suitable for subsequent retrieval.

There are a number of ways to store these results, ranging from using a local database, uploading data into the cloud, or leveraging whatever storage is available at the application level. For the purpose of this exercise, we will use the latter option, and save the data to a Jira user property.

You can grab some sample code from our public Bitbucket repository here: generate_folio_report-sample.groovy.

We will configure the scripted service in Jira under Administration → System → Services as follows, executing overnight and outside of standard office hours.


Endpoint

Our custom endpoint will provide a thin wrapper around the Jira user property, allowing eazyBI to retrieve the data stored therein.

You can grab some sample code from our public Bitbucket repository here: get_folio_report-sample.groovy.

We will configure the custom endpoint in Jira under Administration → Add-ons → REST Endpoints as follows. Note that in the screenshot, the underlying Groovy script has been deployed directly into the script roots on the back-end server, and as such cannot be previewed or modified inline.

The Report

With our data pre-processing engine in place, it is now time to import the results into eazyBI.

Import

We will configure a new application import in eazyBI under Source Data → Add new source application. We select {REST:API} as our import type.

See below for example import parameters. Note that the import will also occur overnight, outside of standard office hours, following the execution of our scripted service.

Our custom endpoint, as specified in the parameters, will serve us JSON data in the following format.

[ { 
 "1_portfolio": "Test portfolio", 
 "2_folio": "Test folio", 
 "id": 478, 
 "startDate": "2014-01-01", 
 "endDate": "2018-06-30", 
 "totalDays": 314.81,
 "plannedEffort": 0,
 "remainingEffort": 314.81,
 "actualDays": 0,
 "contractDays": 309.1 }
 ]

The source columns mapping for the above JSON will then look as follows.


Presentation

In the resulting eazyBI report, we can expose all imported columns as follows. Note that, because the Planned Effort measure is given in hours, we will create a calculated member called Planned Days, where:

[Measures].[Planned Days] = [Measures].[Planned Effort] / 8
 

In Summary

The overall data flow across our pipeline can be visualised as follows.

We hope this article and the examples contained therein will help guide you through the process of setting up a similar pipeline of your own, tailored to your unique needs. If you require any assistance with getting the most out of Jira & eazyBI, do get in touch and we will be happy to help set you on the path!

]]>
2018-08-20T15:04:00+00:00
<![CDATA[Say hello to Zorro Anonymizer!]]> https://www.newverveconsulting.com/blog/say-hello-to-zorro-anonymizer https://www.newverveconsulting.com/blog/say-hello-to-zorro-anonymizer#When:07:36:00Z

Information privacy is becoming increasingly important for businesses and individuals. Until now, if your company used Jira Server, there was no quick and easy way to anonymize sensitive or confidential data.

​We have just released our new app for Jira to fill this gap: Zorro Anonymizer! Zorro Anonymizer provides Jira Administrators the ability to:

  • bulk encrypt and decrypt issue data
  • bulk remove issue data
  • mask or remove issue data in exports

Selectively protect data in Jira

With Zorro Anonymizer, you can choose which data should be anonymized:

  • one or more system fields
  • one or more custom fields
  • comments
  • issue history
  • attachment data
  • work logs

Encrypt issue data in 4 simple steps

With four simple steps, you can encrypt and decrypt data directly in Jira with Zorro Anonymizer:

  1. choose the data you’d like to protect
  2. make your project selection
  3. enter a secret password
  4. click the Anonymize button!

And hey presto! All of your selected data is now hidden from prying eyes.

Easily sanitize issue data

If you need to meet compliance regulations or contractual obligations, you can use Zorro Anonymizer to bulk remove issue data too!

Simply follow the same 4 steps for encryption, but choose to remove data instead. All of your selected data will be permanently removed from Jira.

Removal of data sounds like a simple operation, but until now, you could only do this by running through multiple bulk edit operations in Jira, or spend some time writing and testing a bespoke script.

Anonymize issue data in exports

Suppose you wish to export production data, but protect certain fields.

Zorro Anonymizer gives you the option to remove or mask data in exports. Additional options are provided in the existing export menus in Jira - simply make your choice, and voila!

Why choose Zorro Anonymizer?

There are many reasons to use Zorro Anonymizer. We have identified 3 major use cases.

1. Protect non-production data

  • Do you stage major software upgrades before rolling them out to your production Jira?
  • Does your development team need to load test a new plugin using real-life production data?
  • Do you need to on-board new starts to Jira?
  • Do you demo your Jira setup to clients, partners, or other stakeholders?

To maximise safety and flexibility, best practice is to replicate your environment. Wouldn’t it be great if you could replicate all your production data, but shield certain elements of it too (e.g. user information in issues).

Now, with Zorro Anonymizer, you can anonymize sensitive or confidential information in testing, demo, and staging environments.

2. Protect against insider threats

Jira can contain very sensitive and confidential information, and insider threats from employees (current or former), contractors, or partners can carry high risk.

Zorro Anonymizer helps protect IP or trade secrets and mitigate risk of fraud, theft, and malicious use.

3. Comply with data regulations such as GDPR

If your industry is heavily regulated, or your business needs to comply with laws such as GDPR, Zorro Anonymizer can help.

With GDPR now in place and being enforced since May 2018, organisations can be subject to heavy fines if they are non-compliant. With Zorro Anonymizer, you can comply with regulations on using and storing private data.

Future roadmap

Our roadmap is ultimately driven by user feedback.

We have some exciting features on the way, including Data Center and Service Desk compatibility. Of course, there are also lots of other nifty enhancements coming for end users - so watch this space!

Find out more

If you want to find out more about Zorro Anonymizer, you can browse through our online Knowledge Base here.

To try Zorro Anonymizer for free, simply grab it today from the Atlassian Marketplace! It’s currently available for Jira Server and pricing starts at only $10 for 10 users.

]]>
2018-07-20T07:36:00+00:00
<![CDATA[New Verve Consulting is now listed on G-Cloud 10]]> https://www.newverveconsulting.com/blog/new-verve-consulting-is-now-listed-on-g-cloud-10 https://www.newverveconsulting.com/blog/new-verve-consulting-is-now-listed-on-g-cloud-10#When:11:07:00Z New Verve Consulting has been listed on G-Cloud, the UK Government’s procurement framework for 3 years now. We’re delighted to continue to offer our services on the very latest iteration: G-Cloud 10.

As an authorised supplier on G-Cloud 10, public sector organisations can procure our services without needing to run a full tender process.

Our services in G-Cloud 10 span two categories: Cloud software and Cloud support.

Cloud software

Cloud software services are applications that are accessed over the internet and hosted in the cloud.

We provide Atlassian Server applications as a cloud service, meaning that customers can reduce the cost, complexity, and risk of ownership of Atlassian software such as Jira and Confluence.

We have various customers already using this service, and look forward to welcoming more!

Cloud support

We currently list the following services in the Cloud support category:

We work closely with many public sector bodies, especially in Scotland, in delivering each of the above.

Ultimately, our goal for our public sector services mirrors that for the private sector: to inspire effective teamwork. We’re delighted to continue to pursue this goal as a G-Cloud 10 supplier.

Find out more

To find out more about G-Cloud 10, search for ‘New Verve Consulting’ on the Digital Marketplace. If you’d like to speak with us, feel free to call the team on 0141 291 5950.

]]>
2018-07-12T11:07:00+00:00
<![CDATA[How we ensure project success at New Verve]]> https://www.newverveconsulting.com/blog/how-we-ensure-project-success-at-new-verve https://www.newverveconsulting.com/blog/how-we-ensure-project-success-at-new-verve#When:14:46:00Z At New Verve Consulting, we apply tried and tested approaches to ensure that projects are managed transparently, completed on-time, within budget and of the highest quality.

Effective management can often be the difference between project success and failure. That’s why we stick to the following key values when managing and executing a project.

Maximising collaboration

To facilitate effective communication, we focus on a collaborative approach. We use Jira and Confluence to maximize efficiency and build consensus quickly.


Through our expertise in the use of collaborative tools and communication platforms such as Google Hangouts and Skype/Lync, we can provide top quality services remotely from our offices based in Scotland.

Keeping a tight rein

By applying formal management methodologies and using collaborative tools, we keep tight reins on costs and delivery timetables.

Regular reporting ensures that all stakeholders are informed of progress throughout the lifetime of the project.

Each project manager also keeps a web-based timesheet for recording effort spent along with expenses.

Building strong and worthwhile relationships

We pride ourselves on building relationships with clients and project stakeholders.

We get to know our clients, their businesses and their objectives. Our committed approach has enabled us to establish long-term partnerships with our clients: today a large proportion of our projects represent repeat business.

Adding value

In addition to our commitment to delivering projects on-time and on-budget, we strive to add value to outcomes through innovative thinking and applying best practices.


]]>
2018-05-18T14:46:00+00:00
<![CDATA[Finalists in the West Dunbartonshire Working4Business Awards 2018]]> https://www.newverveconsulting.com/blog/finalists-in-the-west-dunbartonshire-working4business-awards-2018 https://www.newverveconsulting.com/blog/finalists-in-the-west-dunbartonshire-working4business-awards-2018#When:14:02:00Z On Friday 27 April, we attended the Working4Business Awards 2018 at Clydebank Town Hall, celebrating the success of the business community of West Dunbartonshire. We were proud to be finalists this year in the Best Performing Business (less than 25 Employees) category.


Although we didn’t win, it’s great to have all of our efforts and achievements over the past 12 months recognised at such a prestigious local event. Over 200 guests attended the glittering ceremony, hosted by Karen Dunbar.

The evening itself gave us an opportunity to witness the diversity and innovation taking place throughout West Dunbartonshire, and we’re delighted to be part of such a thriving local business community.

Here’s what West Dunbartonshire Council leader Jonathan McColl said on the night:

These awards provide a platform for celebrating the success and achievements of our thriving business community in West Dunbartonshire.

Now in their second year, the awards highlight the diversity which exists in our business community with representatives from across sectors including manufacturing, electronics, tourism and social enterprises.

The winners showcase the best of West Dunbartonshire’s business sector, and I want to congratulate each of them, and recognise the efforts and achievements of all of the finalists, and indeed, all the firms which entered the awards.

]]>
2018-04-30T14:02:00+00:00