Task #2169

travel refund assistant

Added by Florian Effenberger about 2 years ago. Updated 9 months ago.

Target version:
Team - Qlater
Start date:
Due date:
% Done:


Estimated time:


There are various issues with travel refunds, e.g.

  • missing explanations on invoices
  • mixing of events
  • missing receipts
  • travelling by car without prior approval
  • tracking them
  • very much belated replies

My idea is to have an - ideally localized - assistant that

  1. does sanity checks, by
    1. validating input fields (e.g. if date older than three months, show warning)
    2. show checkboxes (yes, I have sent stuff to Berlin)
  2. creates a pre-defined PDF to print
  3. automatically files a ticket in Redmine via e-mail
  4. automatically determines whether SPI or Berlin are applicable

This has the additional benefit that people can upload their documents in an encrypted form.

Development work has to be mainly carried out by Cloph in Silverstripe, but Sophie, can you start collecting the most important things you need to know upfront, so we can draft how such an assistant could look like?

Also adding Mike, who could help out with ideas on the design and workflow.


#1 Updated by Florian Effenberger about 2 years ago

  • Description updated (diff)

#2 Updated by Sophie Gautier about 2 years ago

The Assistant you describe seems complete to my eyes, I also would like t have a way to track the activity of a request other than by mail (keeping a sorted history is really difficult by mail).
Redmine ticket should contain:
- form
- receipts
- a "arrived" note when I know documents are in Berlin
- mail exchanges when it's not complete
- a "paid" note when I enter the refund
- a "in webdav" note when I've uploaded the Berlin form/receipts
- closed when all is done.

#4 Updated by Florian Effenberger about 2 years ago

Another checkbox we should add:
"I confirm that my bank account is correct and under my name"

#5 Updated by Florian Effenberger about 2 years ago

  • Status changed from New to Feedback
  • Assignee changed from Sophie Gautier to Christian Lohmaier
  • Target version changed from Q1/2017 to Q2/2017

Cloph will be the one to carry this out, planning with Q2 to make it come to life

Putting this ticket to "feedback". Next steps are:

- Florian to give final feedback and make a proposal for the workflow
- then Cloph then to turn this into a Silverstripe form that creates a Redmine ticket

#6 Updated by Florian Effenberger about 2 years ago

Another topic to mention is by when refund requests need to be handed in, as we got a chunk of them quite late
Proposal is 3 months after the event or 1,5 months after the end of the year, whatever comes first

We should add a note on signing of the document - some people start printing out the form, writing their name in via computer, and send it to Berlin, which is a pointless exercise...

One more note: The per diem rules (we usually don't pay it due to administrative overhead, and as often food is provided somehow) are not clear enough.

#7 Updated by Florian Effenberger almost 2 years ago

  • Target version changed from Q2/2017 to Q3/2017

#8 Updated by Christian Lohmaier over 1 year ago

still set to feedback - so what is the final set of fields that should be queried?

#9 Updated by Florian Effenberger over 1 year ago

For an approximate view of the resulting form, see
The other fields mentioned should just be sent via e-mail to us, the form should keep the above layout

For the notes/mails Sophie mentioned, nothing to do in the assistant, we will handle it in Redmine

The explanations could either be done in small writing, or by tooltips
Mandatory fields should be distinctable from optional fields by some means

We plan to make the tool localizable, so maybe directly work with some string file

Let's leave out #4 for the moment ("automatically determines whether SPI or Berlin are applicable")


Title: Travel refund request

This website helps you in filling in the travel refund request to get reimbursed. As per our <a href="">travel policy</a>, we are required to get both the original receipts as well as the printed and signed form in Berlin before making a payment.

To ease creating the request, and help us check it before you snailmail your documents to us, please fill in all applicable fields below, and - if possible - add scanned copies of your receipts. After a first check, we will get back to you as soon as possible. When everything is in order, we will confirm, and you can send the documents to us for a timely refund.

  • Last Name(s), mandatory field
  • First Name(s), mandatory field
  • Street Address, mandatory field
  • ZIP Code, mandatory field
  • City, mandatory field
  • State, optional field
  • Country, mandatory field (a text field is fine, no need for a pre-filled dropdown)
  • E-mail address, mandatory field
Banking Details
  • IBAN, optional field, description "If you have an IBAN, please provide it"
  • Account Number, optional field, description "If you have a account number, please provide i.
  • BIC/SWIFT Code, optional field, description "If you have a BIC/SWIFT code, please provide it"
  • Bank Branch Number, optional field, description "ABA routing number, BACS, CHAPS, Sort Code, Transit Number, BSB"
  • Bank Name, mandatory field, description "The name of your bank."
  • Bank Street Address, optional field, description, "Your bank's street address"
  • Bank ZIP Code, optional field, description, "Your bank's ZIP code"
  • Bank City, optional field, description, "The city your bank is located in"
  • Bank Country, optional field, description "The country your bank is located in"
  • checkbox "I confirm that my bank account is correct and under my name", mandatory field, description "You hereby confirm the account is your personal one."

Duplicate "banking details" as "Intermediary Bank" with all fields optional, and a paragraph "In case you already know you need an intermediate bank for receiving payments, please let us know"

  • Event Name, mandatory field, description "The name of the event you have attended. Please file one refund request per event. Examples: LibreOffice Conference 2017, talk at local school"
  • Reason, mandatory field, description "What you did at the event. Examples: Deliver a speech, booth service"
  • Start of Trip, mandatory field, with date and time, description "When your trip started, assuming Berlin time zone unless otherwise stated. Example: 2017-02-03, 18:00"
  • End of Trip, mandatory field, with date and time, description "When your trip ended, assuming Berlin time zone unless otherwise stated. Example: 2017-02-03, 18:00"
  • if the trip has been more than three months ago, please let the user not proceed and show a message:
    "Your trip is longer than three months old. TDF refunds in a timely fashion, in order to keep our budgets up to date. Please e-mail us at for how to proceed."
  • have a table named "Itemized expenses" with e.g. 10 lines with the following columns, nothing is mandatory here * Item, description "Please describe the item to refund. Examples: Shared hotel room for four nights (therefore only 50% requested), train ride, airplane fees" * Date of expense, description "When you paid for the expense, for airplane tickets usually is long before the flight. Example: 2017-01-07" * Invoice Number, description "Any number that is on the invoice to identify it" * Amount, description "The amount you ask to be refunded for, plus the currency. Examples: 25 USD, 10 €" * Add a upload facility per line, description "If possible, please upload scanned copies of your receipt so we can check them before you send them to us via snailmail." * Subtotal in €, description "The subtotal to refund, converted to €"
Car Drive
  • checkbox: "I request refund for car drive. I confirm I have read the travel policies". Not mandatory, but if not checked, the following fields in that section will be disabled. Description: "Rental Cars: Car rentals are expensive, so other forms of transportation should be considered when practical. Members will be allowed to rent a car while out of town provided that the cost is less than alternative methods of transportation. Personal Cars: The use of personal cars is permitted, if this is the most economic transportation. Using a personal car in any case needs a signed travel report, including kilometers travelled. TDF will refund 0.30€ per driven kilometer. TDF asks everyone to use the most cost efficient end-to-end means of transport for yourself, team-mates and materials. When cheaper public transportation is available, it should be preferred. Transporting event materials or excessive transfer times might be reasons for exemption. If in any doubt, please get confirmation before travel."
  • Starting place, mandatory if checkbox is enabled, description "Where you started your trip. Example: Munich"
  • Destination, mandatory if checkbox is enabled, description "The (final) destination for your trip. Example: Hannover"
  • Distance kilometers, mandatory if checkbox is enabled, description "How many kilometers you have driven in total. Example: Munich-Hannover is about 640km one way. Driven kilometers total are twice that, 1280km"
  • out of that, calculate the car drive refund: distance kilometers*0,30 €
Page Footer, to fill in manually by applicants [see OTS document for layout]
  • Total
  • I hereby declare that all of these expenses are valid reimbursable expenditures.
  • City and Date
  • Signature (please sign by hand)

#10 Updated by Florian Effenberger over 1 year ago

  • Target version changed from Q3/2017 to Q4/2017

#11 Updated by Florian Effenberger over 1 year ago

Let's also have a look at which might help out a lot

#12 Updated by Florian Effenberger over 1 year ago

Two more thoughts, because that is currently nagging me a lot:

  • We don't accept 15MB+ pictures from the mobile, and should enforce a sane limit (at least per file)
  • Files should be named in proper form so they can be attributed - having a dozen randomly-named PDFs per request is not gonna fly

#13 Updated by Florian Effenberger 12 months ago

  • Target version changed from Q4/2017 to Q2/2018

This is not really progressing as fast as it should

I wonder how to move that forward
If we do it in Silverstripe, it's likely on Cloph's pile to handle this
However, I'm not tied to Silverstripe, I just want it done, because it really would help Sophie a lot
We really, really should have something in place before LibOCon - and the first refund requests will arrive in July I guess

My proposal to move this forward:
Sophie, can you have a look at how other projects do this? There's the openSUSE tool that could be an option, and there might be other tools around. If we can re-use something existing that serves the purpose, that would save us time and expedite this ticket.
I'd like to agree on either using Silverstripe or some other existing tool within the next weeks, to finally nail this down...

#14 Updated by Sophie Gautier 12 months ago

After some researches, KDE is also using the openSUSE tool for their refund process. GNOME is using a simple mail as we do. Fedora is using a ticketing system. I've watched a video on the openSUSE tool, it seems to answer already several of our needs. It is linked to a profile you need to fill before submitting a refund request, but maybe that step could be avoided. The tool is here

#15 Updated by Florian Effenberger 12 months ago

Is there a test instance of the openSUSE tool, or do we need a local
test installation to have a look?

#16 Updated by Sophie Gautier 12 months ago

There is no demo instance, the video featuring how it works is listed here

#17 Updated by Florian Effenberger 10 months ago

  • Target version changed from Q2/2018 to Qlater

Postponing for the moment, looking into opensuse tool

#18 Updated by Florian Effenberger 9 months ago

  • Status changed from Feedback to Rejected

The OpenSUSE tool seems like a very good choice; closing this ticket therefore

Also available in: Atom PDF