---
title: "Create a custom reporter"
canonical: "https://support.appfire.com/space/REPS/472914685/Create%20a%20custom%20reporter"
format: markdown
---
> Macro (aura-html)

> ❌ The following documentation is provided as is and is out of scope for technical support.

Starting from Reporting version 6.0.0, RandomBits Plugins have been consolidated into a new compile-time library for Reporting and other ServiceRocket add-ons. Due to this major change, developers who previously developed custom reporters for use with Reporting will need to make some changes.

> ⚠️ **Upcoming changes**
> ⚠️ 
> ⚠️ As of Reporting version 6.6.0, support for supplier-core and support-core plugins will be removed from Reporting, which means support for the legacy custom supplier, custom reporter, and custom query will be removed.

This tutorial will take you to step by step through the process of creating your first Custom Reporter. By the end of this tutorial, you will be able to provide data from your plugin to be displayed in Reporting macro.

# Step-By-Step Guide

## Step 1: Create Your Plugin Project

If you haven't already done so, go ahead and open a terminal window and do the following:

1. Create a directory under your home directory and navigate to the directory.
2. Once you are in the directory, enter the `atlas-create-confluence-plugin` command to create the plugin.
3. The command prompts you with the basic information each plugin needs.

## Step 2: Add Reporting Add-on As Dependency

> ⚠️ Since Reporting version 6.6.0, we no longer provide our dependencies through our Maven repository due to frequent infrastructure changes.

1. Download the `obr` for Reporting version 6.6.0 from the [Atlassian Marketplace](https://marketplace.atlassian.com/plugins/net.customware.confluence.plugin.reporting/server/overview).
2. Extract the `jar` file from the `obr` using your preferred file extraction tool, such as 7-zip or WinRar.
3. Install the extracted `reporting-confluence-plugin-6.6.0.jar` to your local Maven repository using one of the following commands:
  or
4. Next, add the Reporting add-on as a dependency to your plugin's `pom.xml`:

## Step 3: Component Import Plugin Modules

Import the required Java components into your plugin by adding the following lines into `atlassian-plugin.xml`:

```xml
<component-import key="reportingMacroAssistant" interface="net.customware.reporting.confluence.ReportingMacroAssistant" />
<component-import key="licenseChecker" interface="net.customware.reporting.confluence.license.LicenseChecker" />
```

## Step 4: Create Custom Reporter Class

> ⚠️ If you are upgrading from Reporting 6.x.x to 6.6.0, you will need to reimport `AbstractSortableQuery<T>` and `AbstractReporterMacro<T>`.
> ⚠️ 
> ⚠️ The package name changes from `com.servicerocket.confluence.randombits.reporting.core``.*` to `net.customware.reporting.core.*`.

1. Create a Query object by extending `AbstractSortableQuery<T>` where `T` is the type of object in your individual results.
2. Create the reporter macro by extending `AbstractReporterMacro<T>` (same `T` as above).  
The reporter superclass assumes a rich text body that will be evaluated.  
It is possible to override it to plain text but you will need to override the `report()` method as well.  
For example:
3. Lastly, you may register the Reporter macro like any other `xhtml-macro`.