Searching answer

Work log (time tracking feature)

Katie 6 years ago in Home Portal updated by Eva_vR 1 year ago 39

Has anyone used the add-on feature of the work log, where users can track how much time they are spending on different tasks? If so, do you have any thoughts regarding its usefulness and accuracy?

Thank you!

If you mean the one integrated into home portal, we don't use that.

If you mean the one integrated into Vendor portal, we are using it actively. Each vendor reports time spent on each job, and we can make some nice statistics. Regarding accuracy: well, time is reported by the users manually...

Hi Laszlo, that's interesting. Do you also use it for in-house vendors (if you have them)? And how do your vendors generally feel about logging their time in this way?

Hi Laszlo, I meant the one integrated into the home portal. We haven't used the vendor portal time tracking at all, but I think that it could be an interesting option to explore for in-house linguists. Thank you for mentioning it!


Hi Katie

we are now testing the time tracking module. Pretty happy with the results. However it'd be great if the logged time would have an impact on the project finances. That is, PM (A) is working on Project (A) for an amount of time (X minutes). PM (A) affects the overall cost of the project because his hourly rate is Y. X*Y= the total project management costs of that project; and that's not reflected on the Project finance. It'd be good to know what % of PM work or internal work is needed in a project and how does it affect the overall results.

Please do ask if you have a more specific questions re: this feature

Thanks Gonzalo! I agree that it would be really useful if it were reflected in the project finance card.

In your use of the module, have you had to ask your project managers to modify their behavior in using XTRF in order to get good data? I.e., make sure to close the project page when not working on that project, or similar practices? How do you factor in time spent outside of XTRF, like time spent in a CAT tool or other program? 

Thanks so much!


As the PMs are using several open tabs at the same time bouncing between projects and clients and whatnot the idea of closing the project page when not working is just not feasible for us. We had to turn off the automatic time tracking because the numbers just did not have anything to do with reality. You also need to remember to change the job type form PM or CAT or SIGNOFF. 

Here's one of my challenges with this module... It gives time codes as "1h 22m" which isn't easily converted to a numerical value. It's hard to generate reports when you can't convert a text field into a numerical value. Has anyone addressed this?


Hi Mark,

We actually run into the same problem and came up with a workaround that involves a Notepad++ macro. The macro does a series of regex replacements and converts the timecodes to something readable by Excel. It adds an extra step to report generation but it makes the numbers a lot easier to handle.

I was just looking into creating a regex expression, but decided to hold off a bit. Would you be willing to share your code? :)

Sure, can I send it to you privately? The code is designed for Notepad++ as I said, so it's a bit longish to post here. :)

Thank you so much! I look forward to it. Does email make sense? mark at mlconnections dot com is my email address/

Thank you so much!

Super helpful! I ended up not using Notepad++ but rather using some of your regex code and created formulas in google sheets. Works like a charm. Thanks.


You're welcome, glad it works for you!

Have you tried to create a Virtual Column for it. I think you can get the numeric value. Or you can try the power query in excel. Or there is a regexp adds-on in excel but I think it won't be so convenient.

You know, I have not developed any virtual column skills. I need a Virtual Column 101 for dummies. Does that exist? :)


Mark, we actually plan it as an Academy Pro class :)

Was there ever an Academy course/lesson made for this? It would be quite helpful!


That would definitely be a better solution. This virtual column will get the period in milliseconds. If someone can give it a HH:mm format instead we'll be sorted.

#set($timeSpent = $entry.getTimeSpent())
#set($millis = $timeSpent.getMillis())

Thanks Angela. Does this get placed in the Project class?

Hi Mark,

This one is tested for the Work Log Entries class.

That's interesting. Now I'll show my ignorance of virtual columns - so where can this column be seen? I can't view it in the project, task or job view...

Don't worry, virtual columns take some getting used to. You can find the column in these views.

How do you normally manage this data? I mean from which type of view.

That's so helpful! I've been creating reports from the reporting module. Knowing that I can generate a view makes it much simpler. Thanks!

Just curious, why do you need a HH:mm format if you already have it in miliseconds? You can now use this to calculate minutes or hours off of it.


Well, that's the format that we use in the final Excel, so the closer we get to that, the less work we have to do outside of XTRF. Also, the reports need to be exported by users that are not necessarily very technical, so we like to make their life easier.

I would really recommend spending some time studying virtual columns. In some cases they are a better solution than a report from the reporting module, which is quite limited in the amount of data you can display. I have a few that I use quite regularly and if you really get into the code you can do pretty amazing things. There is another thread with some useful samples from other users that you could check; I´ll try and post a couple of mine when I have a minute.

A clever Excel can be created which can download the required information from XTRF and convert it to the perfect format. The user only has to click to the Refresh button. I can help you.

Hi Viktor,

Would this be using Power Query? I would definitely be interested in implementing something that if you can help.

I do want to study virtual columns, but I don't have a lot to go on. Earlier on this thread, Lukasz said that they plan on a Academy Pro class... I hope that comes out soon. The other element that I feel is missing is a full data schema of XTRF so we know what fields are available and what the field names are. Or am I off on this?

Having said that, I've been looking at the code that's been posted so far, and I do try to pick up pieces of information from it. I just need a bit more from a foundation.

Thanks for your help Angela!

Mark, have you asked the javadoc from XTRF?

I do have it, but here's my issue, I'm not informed enough on how to use it. This is why I need a little more background. I am open to learning, but I don't know where to start for this. I learn quick. (just don't ask my son - he'll disagree)

Velocity is simple (but not easy to understand at first sight).

I came across the same problems as you do now, I have just learned it myself.

I think with these few steps you can get a long way:

1. use the javadoc for reference

2. use the velocity user guide for the coding language

3. most of the objects within xtrf are hard coupled, so every object (for instance quote) has enough functions to get you where you want, for instance getActivities() or getTasks(). 

4. if you cannot find the functions (in my case it was getting receivables for a quote) you could look at the index-all.html and search for receivable. Then you find getAllReceivables() and figure out how XTRF has their codebase made up.

5. Want to access a static method, use this code: 


6. Use the $utils for all utils functionality (VelocityUtils in javadoc), think of creating instances, retrieving enums, set some formatting.

7. Sometimes you cannot access a field, try debugging by adding .class to the parent field and check if it is the correct Type. Is it a DynaBean object, use $utils.unwrap($field) to get the inner class.

8. If you need to access some object that ends with Service, you should create it using the $utils as well, for instance: 

#set($taskService = $utils.getService("com.radzisz.xtrf.service.TaskService")) 


Thanks, Dennis.

That's a very good howto! 5th was new for me. Could you please copy this to the virtual column thread (http://xtrf.userecho.com/forums/8-questions-answers/topics/633-sharing-virtual-column-code/#comment-1903)

I think that's the perfect place for such a good instruction.


I found that the only way to learn is to reverse engineer macros and virtual columns that you have access to. Start with simple ones and build from there. You'll also need to understand the Velocity language but it is fairly straightforward (also quite limited). This is a good guide: http://velocity.apache.org/engine/2.0/user-guide.html.

If you create a small test macro at task level you can check which data you are able to extract looking at the available methods in the Task class in XTRF javadocs.

That's exactly how we do it. And with the upcoming release of XTRF7, I expect the javadocs will be updated as well.

I would like to set up an API connection to export time tracking data. Is there any information on the field structure & names to help get started on this? Thanks!

You can get all work log entries by using browser methods from the API, just as has been the case with Google Data Studio.