GET /blog/how-to-create-your-own-cool-custom-report-module-i.md text/markdown back to the human version
---
title:        "How to create your own cool custom report module in Kentico"
description:  "This post contains steps to create a new Kentico module using a custom UI template and custom UI web part to display a sample report. It will allow you to grant access to single reports by simply configuring roles and permissions. No coding required!"
url:          https://www.jeroenfurst.nl/blog/how-to-create-your-own-cool-custom-report-module-i
date:         2016-03-30
category:     API and customisation
tags:         [API and customisation]
reading_time: 2
---

# How to create your own cool custom report module in Kentico

> This post contains steps to create a new Kentico module using a custom UI template and custom UI web part to display a sample report. It will allow you to grant access to single reports by simply configuring roles and permissions. No coding required!

## Step 1: Create the module

The first thing that we are going to do is creating the new module. For more info on module development check out the [documentation](https://docs.kentico.com/display/K9/Creating+custom+modules).
 
 **Module display name**: My cool report module
 
 Don't forget to define the module **read** permissions (with display in matrix checked) and grant desired roles (e.g. content editor in Dancing Goat) access to the module. If you have the UI personalization switched on (within Security & Membership settings) then please ensure that you enable the UI elements for the roles.
 
 Check out my post on [working with roles and permission](~/blog/september-2015/working-with-roles-and-permissions)s for more info.

## Step 2: Build the user interface

Create a new user interface within a desired section (e.g. Configuration).
 
 **Display name**: My cool report module
 **Caption**: My cool report module
 **Element icon type**: Class
 **Element icon CSS class**: icon-app-marketing-reports
 **Page template**: Vertical tabs
 
 Add a child element:
 
 **Display name**: Sample report
 **Caption**: Sample report
 
 We will leave the rest empty and ensure that the module works as expected first :) If you log in with a user (e.g. Andy) that has the configured role you should see the module and inform you that the Template "" was not found:
 
 ![Template was not found](~/getContentAsset/be9436a7-30b6-45aa-925e-80b52b5ab266/310c1ea5-13ca-4d75-95a0-620f51989b44/8950b8db_template_was_not_found.PNG.PNG?lang=en-US)

## Step 3: Create a custom UI page template

What I would like to do know is create a custom UI page template to be able to have full control over the content of the module. Go to the page template application and within the UI templates section create a optional category and new template:
 
 **Template display name**: My cool report UI template
 
 Switch to the **General** tab and change the **Template type** to "UI page".
 In the **Layout** tab add the following markup: **<div class="PageContent"><cms:CMSWebPartZone ZoneID="zContent" runat="server" /></div>**
 
 We are now ready to add web parts to the template in the **Design** tab. But before we do that let's configure a web part that can display a selectable report.

## Step 4: Configure the UI report web part

Fire up the web parts application and within the UI Webparts section create a optional category and new web part:
 
 **Web part**: Inherit from an existing
 **Display name**: Report (UI)
 **Inherit from**: Report
 
 After saving the web part change it's **Type** to UI.
 
 Go back to the Page templates section and add the Report (UI) web part to the "My cool report UI template" in the **Design** tab.
 
 Now we could select the "Sample report" in the report name selector but we can make it more flexible using configurable UI template properties.
 
 For additional info on [how to create custom reports in Kentico](http://www.imediainc.com/blog/january-2016/how-to-create-a-custom-report-in-kentico) I highly recommend the post by Kentico MVP Laura Frese.

## Optional step 5: Define UI template properties

Select the "My cool report UI template" and open the **Properties** tab. Create a new field:
 
 **Field name**: Report
 **Field caption**: Report
 **Form control**: Report selector with parameters
 
 Go back to the **Design** tab and configure the Report (UI) web part. Click on the arrow to edit the value of the Report name and add the following macro condition:
 
 ![Report condition](~/getContentAsset/7220bf15-464a-4cca-a6ff-8413c783ae49/310c1ea5-13ca-4d75-95a0-620f51989b44/400b08d5_report_condition.PNG.PNG?lang=en-US)
 This will automatically pass the selected report from the template properties into the web part. Don't forget to select the report in the sample report user interface properties:
 
 ![UI template properties](~/getContentAsset/264380db-4bcd-4712-87f7-e0444ec89b2c/310c1ea5-13ca-4d75-95a0-620f51989b44/12272b4e_ui_template_properties.PNG.PNG?lang=en-US)

## View the result

If you have followed all the above steps carefully then you should have a new cool report module available. Enjoy!
 
 ![My cool report module](~/getContentAsset/09bbbe1f-55ba-4eb0-80fc-f05697d1dce1/310c1ea5-13ca-4d75-95a0-620f51989b44/d775bedc_my_cool_report_module.PNG.PNG?lang=en-US)