How we Built a Finnish Transparency Register Solution on Microsoft Power Platform

Fortum Tech
Fortum Technology Blog
12 min readJan 23, 2024

--

From April 1, 2024 onwards, all Finnish companies are required to collect information on the lobbying activities conducted by their employees. This has been mandated by Finland Transparency Register Act, that mandates organizations engaging in lobbying in Finland to report to the Finnish Transparency Register any long-term and systematic lobbying efforts directed at the Finnish Parliament or ministries.

In preparation for these new requirements — and to enhance the internal coordination and monitoring of our activities — Fortum has developed its own Transparency Register tool. All Fortum employees engaging in activities covered by the Register Act, use this digital tool to report them.

In this blog post we will share a reference implementation / example of the solution that can be used by other Finnish companies to meet these same requirements. Links to download the sample solution and other related artifacts are provided at the end of this article.

How Did We Approach This Challenge?

It was clear that a user-friendly tool, capable of meeting our safety and privacy requirements, that could be developed and made available quickly was needed to ensure a smooth adoption of the new practices and meet the compliance requirements. By leveraging the Microsoft Power Platform and low-code / no-code capabilities, we were able to have an iterative approach while co-developing the solution with the stakeholder group. The solution includes, among other things, a Microsoft Power Apps application, Microsoft Power Automate workflows, and a Microsoft Dataverse database.

Step by Step Guide to Build the Solution

This blog post walks through the main end user use case, explains the main components contained within the solution and provides instructions on how to deploy and configure the solution for use.

Using the solution

[Note: Screenshots in this section introduce the application in Fortum theme. The solution shared publicly via links in this blog post is devoid of any company-specific branding, including our logos and theme colors.]

We designed our step-by-step instructions to both our internal users and citizen developers who want to build using Microsoft Power Platform. These instructions are the best way to introduce the application and help end users to navigate the key functionalities.

Start page

Start page consists of four blocks:

- Add a lobbying activity
Contains short briefing of the Finnish Transparency Register law and a button to open a lobbying activity creation form.

- List of all lobbying activities
Functionality for the user to navigate to activity listing page. By design all lobbying activities are visible to everyone using the app.

- Draft items
It is possible to mark a lobbying activity as a draft and fulfill information later. Items are also automatically marked as a draft, if the activity date is in the future or if the activity is created by automation (discussed later).

- Useful information
This section provides various links for the end user to get more information on the legislation or on the usage of the application. The links Fortum implementation of the app contains are:

o Fortum intranet article titled “Getting ready for the Transparency Register Act — recording of the first info session available.”

o Fortum internal general presentation of the Finnish transparency register and its implementation at Fortum

o Instruction video and a slide deck on how to use the tool

o Teams channel where the user can ask questions, report bugs and propose new functionality

o Fortum’s Business Ethics Guidelines for Lobbying

o The Finnish public transparency register

o Transparency register guidelines in Finnish, Swedish and English

o The Finnish Transparency Register act

For admin team members the start page also contains a toggle button that reveals three additional functionality areas needed to better maintain the data in the solution database.

- Manage stakeholders
Possibility for the admin team members to add new stakeholders and to edit and deactivate existing ones.

- Add new organization
Possibility to add new organizational levels to the database. A stakeholder is always related to a specific organizational level. One example of an organizational level is “Finland -> Eduskunta (Finnish Parliament) -> Eduskunnan kanslian virkamies -> Keskuskanslia — Pöytäkirjatoimisto”.

- Manage topics
Each lobbying activity can have primary, secondary and tertiary topics assigned. Topics can be maintained through this functionality. It is also possible for the end user to propose a new topic while creating a new lobbying activity — those proposals are approved and rejected also via this feature.

Adding a lobbying activity — basic information

Adding a new lobbying activity happens via a form that opens on the activity listing screen. Basic information for the activity needs to be filled in before participants can be added to it.

Required information for all lobbying activities is:

- Event type: Meeting, Email, Phone call, Message, Political event or Other

- Topic description

- Event date

- Primary topic

- Main company contact.

When all the required information has been filled, the activity can be saved. It is possible to add participants to the activity only after it has been saved.

Adding a lobbying activity — participants

A lobbying activity can contain multiple participants — both internal and external to the company. External participants are called External stakeholders and internal are called Company employees. On lobbying activity can contain as many internal and external participants as needed.

Company employees are simply selected from a list of all company Entra ID accounts. External stakeholders are selected from existing stakeholders or, if needed, a new stakeholder can be created.

Add a lobbying activity — Creating a new stakeholder

As already mentioned, it is also possible to add new stakeholders to the system. All users of the application can attach added stakeholders as participants to their lobbying activities.

View and manage lobbying activities

The user can view a list of all lobbying activities entered in the system. He can also utilize a robust search to look for activities based on specific search criteria. Security roles of the system are very permissive:

- All users can create new lobbying activities

- All users can view all lobbying activities (including drafts)

- All users can modify and remove existing lobbying activities (although a confirmation dialog is displayed upon deletion)

Creating lobbying activities via automation

As we wanted to make the creation of new lobbying activities as easy as possible to promote adoption of the solution, we implemented automation feature that can be used to create draft versions of activities without having to open the app.

This feature enables users to easily do initial registration of the activity by simply sending an e-mail to specific user account — at Fortum the name of the account is Fortum Transparency Register. The e-mail can be a regular e-mail or it can be a meeting — based on this the type of the activity is automatically set to either Meeting or Email. The mail subject is used as the Topic description and all company employees who are recipients of the e-mail are automatically added as internal participants to the activity. Also those external recipients, who have a corresponding Stakeholder record in the database, are automatically added as external participants.

The lobbying activity is created as a draft version and the sender of the e-mail is automatically set as the main contact of the activity. Once the activity is created, a Teams message to the sender is posted informing the user of the new activity created and providing a link to open the app.

Main solution components

Main components of the solution are shown in the high-level architecture picture below.

Power Apps canvas app

This is the user interface for all the employees involved in lobbying. The app consists of several screens — the main ones introduced in the earlier section.

Power Automate flows

There are three flows related to the solution, the most important being the one providing automation to create new draft lobbying activity based on a received e-mail. The three flows are:

- Contact event draft creation
This is the automation flow, that monitors service account’s inbox and creates lobbying activities based on received e-mails. Activities are only created, if the sender e-mail address is found from company Azure AD and if there is no activity already created with the same Conversation Id. Conversation Id is a unique identifier of used to group related email messages into a conversation or thread and it is calculate automatically by Microsoft Outlook based on various fields of the message (main field being the Subject). This identifier is checked in order to prevent duplicate lobbying activity creation in case of multiple messages sent within single email conversation.

- Contact event search
This flow is responsible of fetching contact events from Dataverse based on user’s search criteria on lobbying activities listing page. Due to the complexity of the database schema and the search capabilities enabled in the UI, the flow assembles a FetchXML query to execute the search against Dataverse API.

- Update AAD User info on Participant
This little helper flow is triggered whenever Fortum employee field of a Participant record is changed. The flow fetches Display Name of the employee and updates it on the record.

Dataverse database

All data that is maintained by the system is stored in Dataverse database.

The solution is published as one unmanaged solution package that you can simply import to your development environment. In the development environment, make necessary changes to the solution, export it as a managed (preferably) solution and import it to your test or production environment. Lobbying activities are stored in a Contact Event table colored in red in the below data model picture.

The most relevant tables used by the solution are:

- Contact Event
All lobbying activities are stored as rows in this table.

- Topic
One lobbying activity can have primary, secondary and tertiary topic — primary topic is required information when creating or modifying an activity via Power Apps UI.

- Participant
Each lobbying activity contains zero or more participants. Participant row is an activity specific instantiation of either an external (Stakeholder) or internal (Microsoft Entra ID) participant.

- Stakeholder
Represents external stakeholder in the system, such as ministry officials.

Organization
Organization table is probably the most complex table in the solution. It used to provide a multi-level organization selection when adding a new stakeholder to the system.

Political party
For some organization levels a political party also needs to be defined when creating a new stakeholder. List of available political parties are maintained in this table.

  • Microsoft Entra ID
    This is on or the built-in tables in Dataverse. It is virtual table that provides access to company Azure AD (Entra ID) accounts.

In addition to the tables introduced above also Dataverse built-in tables User and Team are used to check whether the current user is part of the admin team of not.

Deploying the solution

The entire solution is packaged into a single Power Platform solution that you can simply import to your target environment as an unmanaged solution.

It is recommended that you import the solution to a development environment first, where you can make desired modifications to it. After that, you can export the updated solution as a managed solution package and import it to your test and/or production environment.

Solution name is StakeholderMeetingRegistry. When you start importing it, you are presented with the below information.

Once you proceed, you need to assign connections to each connection reference contained within the solution. While you can use your own credentials for connection in the development environment, it is wise to use a service account in production environment. It is the email inbox of the account defined for Office 365 Outlook connection that is used by automation to create events based on received email messages.

Next step is to provide some values for Environment Variables.

- Is Production
Boolean value indicating whether this is the production instance of the solution. This should be set to Yes only for the final production environments.

- Service account email
Email address of the service account, whose inbox is monitored for automated activity creation.

- AppURL
URL of the Power Apps app. This URL is provided to end users by automation whenever a user sends an email to the abovementioned inbox and a new lobbying activity is created.
NOTE: You need to fill this value later, since you don’t know the app URL yet.

Configuration and data import

Once you have imported the solution, there are some configuration and data related tasks that you may want to do.

Reading in organizational levels and political parties

Fortum has put great effort to pre-populate a couple of tables with real data. Two CSV files are provided for other companies to be able to take advantage of this work. You can import political parties and organizational structure by browsing to solution’s Tables view and selecting Import data from Excel as shown below.

Admin team

For a user to be able to see the Toggle admin view button on the home screen of the app, there must be a Power Platform team called Transparency Register Admin Users and the user must be a member of that team.

Security roles

There are two security roles defined in the solution:

- Stakeholder Meeting Registry User
This security role should be assigned to everyone using the app.

- Stakeholder Meeting Registry Admin
This is the security role that should be assigned to Transparency Register Admin Users team.

Starting the automation flow

The flow to create lobbying activities automatically based on received email messages is turned off by default. At least for production environment this flow should be turned on, if you want your users to be able to take advantage of this feature.

Summary and Key Takeways

In this blog post we shared how our Transparency Register tool was designed and developed using Microsoft Power Platform. With this tool, an organization can comply with the new Finnish legislation and to enhance their internal coordination and monitoring of lobbying activities.

We covered the main features, managing lobbying activities, participants and stakeholders, and leverage automation to create activities based on email messages. We also described the key technology components of the solution: Microsoft Power Apps canvas app, Power Automate flows and Dataverse database. With the step-by-step instructions provided, deploying, and configuring these Microsoft Power Platform components can be done in a few minutes.

I hope that this blog post has been useful and informative for you. If you are interested in trying out the solution, you can download it from the links below. Please provide any feedback and suggestions on how to improve the solution further in the comments 😊

- Download link for the solution package
https://bit.ly/fortum-transparency-register-example-solution-package

- Download link for Organization data
https://bit.ly/fortum-transparency-register-org-data

- Download link for Political party data
https://bit.ly/fortum-transparency-register-political-parties-data

About the Author:

Terho Antila, Low-Code Center of Excellence Lead at Fortum

Terho Antila

--

--