[GH-ISSUE #846] Add Scheduled Reporting #2476

Closed
opened 2026-03-14 04:11:23 +03:00 by kerem · 12 comments
Owner

Originally created by @JakeFri on GitHub (Dec 8, 2021).
Original GitHub issue: https://github.com/amidaware/tacticalrmm/issues/846

Originally assigned to: @sadnub on GitHub.

Hey guys,
So I don't know if maybe i'm just over looking things here but I am needing Emailed reports for a specific customers.
For example I have a customer who would like and email every Friday that would basically tell him if his devices are in good shape or not according to what's set up in the checks.

It would be amazing if that could be added.
Thanks

Originally created by @JakeFri on GitHub (Dec 8, 2021). Original GitHub issue: https://github.com/amidaware/tacticalrmm/issues/846 Originally assigned to: @sadnub on GitHub. Hey guys, So I don't know if maybe i'm just over looking things here but I am needing Emailed reports for a specific customers. For example I have a customer who would like and email every Friday that would basically tell him if his devices are in good shape or not according to what's set up in the checks. It would be amazing if that could be added. Thanks
kerem 2026-03-14 04:11:23 +03:00
Author
Owner

@silversword411 commented on GitHub (Dec 8, 2021):

Reports are in-process atm. I'll leave this as enhancement so that they can think about how a "scheduled" might be able to be added to that.

<!-- gh-comment-id:989035641 --> @silversword411 commented on GitHub (Dec 8, 2021): Reports are in-process atm. I'll leave this as enhancement so that they can think about how a "scheduled" might be able to be added to that.
Author
Owner

@JakeFri commented on GitHub (Dec 8, 2021):

That sounds great, thanks.
Do you have a guess on how soon reports will be implemented? If not that's fine.

<!-- gh-comment-id:989076118 --> @JakeFri commented on GitHub (Dec 8, 2021): That sounds great, thanks. Do you have a guess on how soon reports will be implemented? If not that's fine.
Author
Owner

@silversword411 commented on GitHub (Dec 8, 2021):

It'll come when it'll come ;)

Kickin' some $'s to the dev's help though. Interested?

<!-- gh-comment-id:989163700 --> @silversword411 commented on GitHub (Dec 8, 2021): It'll come when it'll come ;) Kickin' some $'s to the dev's help though. Interested?
Author
Owner

@JakeFri commented on GitHub (Dec 8, 2021):

Alright, good enough.

We're actually still working on implementing this system, if things go well then we'll defiantly help out the dev's.

<!-- gh-comment-id:989167693 --> @JakeFri commented on GitHub (Dec 8, 2021): Alright, good enough. We're actually still working on implementing this system, if things go well then we'll defiantly help out the dev's.
Author
Owner

@sadnub commented on GitHub (Dec 10, 2021):

I made some progress on this. I can't give a time frame for when it will be fully featured though.

<!-- gh-comment-id:990619157 --> @sadnub commented on GitHub (Dec 10, 2021): I made some progress on this. I can't give a time frame for when it will be fully featured though.
Author
Owner

@JakeFri commented on GitHub (Dec 10, 2021):

Awesome, thanks a bunch guys.

<!-- gh-comment-id:991010016 --> @JakeFri commented on GitHub (Dec 10, 2021): Awesome, thanks a bunch guys.
Author
Owner

@frankemann commented on GitHub (Dec 16, 2021):

@sadnub Count me in as a alpha/bravo/charlie/delta tester in everything regarding reporting in TRMM.. We cant wait :) :)

<!-- gh-comment-id:995868067 --> @frankemann commented on GitHub (Dec 16, 2021): @sadnub Count me in as a alpha/bravo/charlie/delta tester in everything regarding reporting in TRMM.. We cant wait :) :)
Author
Owner

@chrios commented on GitHub (Jan 25, 2022):

I've been running a report for all agents with the following script if it gives you some ideas. You could automate it with cron? Run at your own risk:

ssh rmm0.xx.xxxx.xx

cd /rmm/api/tacticalrmm

. ../env/bin/activate

python manage.py shell <<EOF

from agents.models import Agent
import csv

agents = []
count = 0

for e in Agent.objects.all():
    count += 1

    try: 
        agents.append({
            'hostname': e.hostname,
            'serialNumber': e.wmi_detail['bios'][0][0]['SerialNumber'],
            'model': e.wmi_detail['comp_sys'][0][0]['Model'],
            'modelSKU': e.wmi_detail['comp_sys'][0][0]['SystemSKUNumber'],
            'cpu': e.cpu_model[0],
            'ram': e.total_ram,
            'operatingSystem': e.operating_system,
            'client': e.client.name,
            'user': e.last_logged_in_user
        })

    except TypeError:
        print('error processing %s' % e.hostname)
        pass

print('exported %s number of agents' % count)

keys = agents[0].keys()

with open('agents.csv', 'w', newline='') as output_file:
    dict_writer = csv.DictWriter(output_file, keys)
    dict_writer.writeheader()
    dict_writer.writerows(agents)

Maybe we could put it into an API function and then write a simple web ui to generate the report? Or implement a more full fledged 'report manager' feature where you can build your own reports by selecting fields... What direction are you planning on taking @sadnub ?

<!-- gh-comment-id:1020785677 --> @chrios commented on GitHub (Jan 25, 2022): I've been running a report for all agents with the following script if it gives you some ideas. You could automate it with cron? Run at your own risk: ssh rmm0.xx.xxxx.xx cd /rmm/api/tacticalrmm . ../env/bin/activate python manage.py shell <<EOF from agents.models import Agent import csv agents = [] count = 0 for e in Agent.objects.all(): count += 1 try: agents.append({ 'hostname': e.hostname, 'serialNumber': e.wmi_detail['bios'][0][0]['SerialNumber'], 'model': e.wmi_detail['comp_sys'][0][0]['Model'], 'modelSKU': e.wmi_detail['comp_sys'][0][0]['SystemSKUNumber'], 'cpu': e.cpu_model[0], 'ram': e.total_ram, 'operatingSystem': e.operating_system, 'client': e.client.name, 'user': e.last_logged_in_user }) except TypeError: print('error processing %s' % e.hostname) pass print('exported %s number of agents' % count) keys = agents[0].keys() with open('agents.csv', 'w', newline='') as output_file: dict_writer = csv.DictWriter(output_file, keys) dict_writer.writeheader() dict_writer.writerows(agents) Maybe we could put it into an API function and then write a simple web ui to generate the report? Or implement a more full fledged 'report manager' feature where you can build your own reports by selecting fields... What direction are you planning on taking @sadnub ?
Author
Owner

@sadnub commented on GitHub (Jan 25, 2022):

I have a pretty good start on a custom-built report runner already. Basically, using Markdown/CSS/JS for the report templates and pandas to render everything on the backend.

<!-- gh-comment-id:1021241996 --> @sadnub commented on GitHub (Jan 25, 2022): I have a pretty good start on a custom-built report runner already. Basically, using Markdown/CSS/JS for the report templates and pandas to render everything on the backend.
Author
Owner

@chrios commented on GitHub (Sep 19, 2022):

Hey @sadnub, sorry to bother you, just wondering about any release plans for the report runner? Is there another issue I should monitor for updates? Thanks!

<!-- gh-comment-id:1250540017 --> @chrios commented on GitHub (Sep 19, 2022): Hey @sadnub, sorry to bother you, just wondering about any release plans for the report runner? Is there another issue I should monitor for updates? Thanks!
Author
Owner

@silversword411 commented on GitHub (Aug 26, 2025):

https://github.com/amidaware/tacticalrmm/pull/2239

<!-- gh-comment-id:3222450145 --> @silversword411 commented on GitHub (Aug 26, 2025): https://github.com/amidaware/tacticalrmm/pull/2239
Author
Owner

@wh1te909 commented on GitHub (Oct 15, 2025):

released in v1.3.0

<!-- gh-comment-id:3406882637 --> @wh1te909 commented on GitHub (Oct 15, 2025): released in v1.3.0
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/tacticalrmm#2476
No description provided.