16:21:24 From Smeet to Everyone : You'd have to group the transactions by step and then create one record or line per step. One challenge is that not all transactions for a given step record the KC. It sounds like if there is a KC for a student-step (not all student-steps have KCs, as mentioned) then the most likely place to find it is on the first transaction for the step. Though whether you can totally rely on that to be always true I am not entirely sure. So perhaps your script should assume that the KC can be recorded with any transaction for a given student-step. Note that a student-step always ends with a correct attempt. And that there can be at most one correct attempt per student step. 16:21:50 From Smeet to Everyone : Part of a Response by Prof. Aleven