{"id":19713358,"url":"https://github.com/ctsit/rcc.billing","last_synced_at":"2025-04-29T18:31:10.120Z","repository":{"id":256222356,"uuid":"472506279","full_name":"ctsit/rcc.billing","owner":"ctsit","description":"Automated, data-driven service billing implemented on REDCap Custodian","archived":false,"fork":false,"pushed_at":"2025-04-07T17:57:01.000Z","size":12125,"stargazers_count":0,"open_issues_count":21,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-14T12:38:17.332Z","etag":null,"topics":["r","redcap"],"latest_commit_sha":null,"homepage":"https://ctsit.github.io/rcc.billing/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ctsit.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json"}},"created_at":"2022-03-21T20:45:15.000Z","updated_at":"2025-03-12T20:36:32.000Z","dependencies_parsed_at":"2025-04-14T12:49:05.079Z","dependency_job_id":null,"html_url":"https://github.com/ctsit/rcc.billing","commit_stats":null,"previous_names":["ctsit/rcc.billing"],"tags_count":87,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsit%2Frcc.billing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsit%2Frcc.billing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsit%2Frcc.billing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctsit%2Frcc.billing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctsit","download_url":"https://codeload.github.com/ctsit/rcc.billing/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251559840,"owners_count":21609084,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["r","redcap"],"created_at":"2024-11-11T22:21:13.249Z","updated_at":"2025-04-29T18:31:07.861Z","avatar_url":"https://github.com/ctsit.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"# REDCap Automated Billing\n\n[![DOI](https://zenodo.org/badge/472506279.svg)](https://zenodo.org/doi/10.5281/zenodo.13737162)\n\nREDCap Automated Billing is an automated, data-driven service billing system for a REDCap system. The University of Florida’s CTS-IT designed and wrote this system to charge a modest annual fee for each project and bill for customer support work logged in a REDCap-based service request system. This generates revenue, reduces data privacy risks by incentivizing the deletion of abandoned projects, and improves the quality of research productivity metrics.\n\n## Motivation\n- Generate revenue to offset costs and improve service.\n- Reduce data exposure risk via deletion of unneeded things.\n- Improve the quality of metrics by not counting junk projects.\n- Reduce support staff workload.\n\n## What we learned\n- We can make money by charging for REDCap services.\n- Charges are a tool to incentivize customer behavior.\n- Good people data and project ownership data are required.\n- There is no such thing as over-communication.\n- Partner with your fiscal team.\n- Use an incremental and iterative approach.\n- Automate everything.\n\n## Novel Concepts\n\nREDCap Automated Billing introduces some concepts outside the normal scope of a REDCap system. These are described in [Novel Concepts](https://ctsit.github.io/rcc.billing/articles/novel_concepts.html)\n\n## Billing for support work\n\nThe complexities of billing for REDCap support work are described in [Billing for REDCap support work](https://ctsit.github.io/rcc.billing/articles/billing_for_support.html)\n\n## Business workflows\n- Cleaning person data\n  - [cleanup_bad_email_addresses](https://ctsit.github.io/rcc.billing/articles/cleanup_bad_email_addresses.html)\n  - [cleanup_bad_project_pi_email_addresses](https://ctsit.github.io/rcc.billing/articles/cleanup_bad_project_pi_email_addresses.html)\n  \n- Cleaning ownership data\n  - [cleanup_project_ownership_table](https://ctsit.github.io/rcc.billing/articles/cleanup_project_ownership_table.html)\n  - Ban accounts/emails of people who left your institution. See  [update_invoice_line_items_with_invoicing_details](https://ctsit.github.io/rcc.billing/articles/update_invoice_line_items_with_invoicing_details.html)\n\n\n- Exempt special people and special projects from billing\n  - [update_project_billable_attribute](https://ctsit.github.io/rcc.billing/articles/update_project_billable_attribute.html)  \n\n\n- Manage abandoned projects\n  - [delete_abandoned_projects](https://ctsit.github.io/rcc.billing/articles/delete_abandoned_projects.html)\n  - [sequester_orphans](https://ctsit.github.io/rcc.billing/articles/sequester_orphans.html)\n\n- Create \u0026 Manage charging records\n  - [create_and_send_new_invoice_line_items](https://ctsit.github.io/rcc.billing/articles/create_and_send_new_invoice_line_items.html)\n  - [update_invoice_line_items_with_invoicing_details](https://ctsit.github.io/rcc.billing/articles/update_invoice_line_items_with_invoicing_details.html)\n  - [sequester_unpaid_projects](https://ctsit.github.io/rcc.billing/articles/sequester_unpaid_projects.html)\n  - cancel_invoice_line_items (Ad hoc)\n\n- Manage organizational data\n  - write_uf_fiscal_orgs_to_org_hierarchies (temporarily disabled)\n  - write_uf_fiscal_orgs_to_person_org (temporarily disabled)\n\n- Manage pro bono service request work\n  - [update_free_support_time_remaining](https://ctsit.github.io/rcc.billing/articles/update_free_support_time_remaining.html)\n  - [update_probono_service_request_records](https://ctsit.github.io/rcc.billing/articles/update_probono_service_request_records.html)\n\n- Internal reporting\n  - [billable_candidates](https://ctsit.github.io/rcc.billing/articles/billable_candidates.html)\n  - [revenue_status_and_projections](https://ctsit.github.io/rcc.billing/articles/revenue_status_and_projections.html)\n\n- Manage customer communications\n  - [remind_owners_to_review_ownership](https://ctsit.github.io/rcc.billing/articles/remind_owners_to_review_ownership.html)\n  - [request_correction_of_bad_ownership_data](https://ctsit.github.io/rcc.billing/articles/request_correction_of_bad_ownership_data.html)\n  - [warn_owners_of_impending_bill](https://ctsit.github.io/rcc.billing/articles/warn_owners_of_impending_bill.html)\n\n\n## When jobs run\n\nMost ETLs and reports are run in a regular basis via Cron. The schedule of those events can be found at [When jobs run](https://ctsit.github.io/rcc.billing/articles/when_jobs_run.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctsit%2Frcc.billing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctsit%2Frcc.billing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctsit%2Frcc.billing/lists"}