Users are getting an error when trying to edit an entry that is still in process state.
Error states that it requires higher right, but time is not submitted yet:
{ "error": { "statusCode": 500, "errorCode": "UnexpectedError", "errorDescription": "Unexpected error occurred", "fields": { "originalMessage": "You need higher permissions to edit Billable", "originalStacktrace": " at Timetracker.JointCodebase.BusinessLayer.Context.Services.WorklogsBillableService.UpdateExistedWorkLog(WorkLogView newValues, WorkLog workLogToUpdate, BillableSettingsState billableSettings) in C:\\a\\3\\s\\TimetrackerOnline\\TimetrackerOnline.BusinessLayer\\Context\\Services\\WorklogsBillableService.cs:line 149\r\n at Timetracker.JointCodebase.BusinessLayer.Context.Services.WorklogsBillableService.UpdateWorkLogBillableInformation(WorkLogView newValues, WorkLog workLogToUpdate, Boolean isNew) in C:\\a\\3\\s\\TimetrackerOnline\\TimetrackerOnline.BusinessLayer\\Context\\Services\\WorklogsBillableService.cs:line 72\r\n at Timetracker.JointCodebase.BusinessLayer.Context.Services.WorklogsBillableService.UpdateWorkLogBillableInformation(Double newPeriodLength, Boolean newIsBillableFlag, Nullable`1 newBillablePeriodLength, WorkLog workLogToUpdate, Boolean isNewWorklog) in C:\\a\\3\\s\\TimetrackerOnline\\TimetrackerOnline.BusinessLayer\\Context\\Services\\WorklogsBillableService.cs:line 54\r\n at Timetracker.Api.Implementation.RestApiWorkLogsService.UpdateWorkLogInternal(WorkLog workLog, WorkLogPatchModel workLogPatch, SettingsActivityType settingsActivityType)\r\n at Timetracker.Api.Implementation.RestApiWorkLogsService.UpdateWorkLog(Guid id, WorkLogPatchModel workLogPatchModel, Boolean isReplacing, WorklogFilterModel filter)\r\n at Timetracker.Web.Controllers.Api.v3._0.WorkLogsController.<>c__DisplayClass7_0.<UpdateWorkLog>b__0(IRestApiWorkLogsService api) in C:\\a\\3\\s\\TimetrackerOnline\\TimetrackerOnline.Web\\Controllers\\Api\\v3.0\\WorkLogsController.cs:line 69\r\n at Timetracker.Web.Controllers.Api.v3._0.BaseRestApiController`1.ExecuteActionInternal[TOut](Func`2 func, Boolean passUnlicensed) in C:\\a\\3\\s\\TimetrackerOnline\\TimetrackerOnline.Web\\Controllers\\Api\\v3.0\\BaseRestApiController.cs:line 48\r\n at lambda_method(Closure , Object , Object[] )\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)\r\n at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\r\n at AspNetCoreRateLimit.RateLimitMiddleware`1.Invoke(HttpContext context)\r\n at Dynatrace.OneAgent.Introspection.Shared.CloudEventsHelper.InvokeNext[Context](Context context, IHttpContext requestContext, OperationReference operation, Func`2 invokeNext)\r\n at Dynatrace.OneAgent.Introspection.Shared.NewAspNetCoreTracingMiddlewareBase`1.InvokeAspMethod(Context context, IHttpContext requestContext)\r\n at Dynatrace.OneAgent.Introspection.Shared.NewAspNetCoreTracingMiddlewareBase`1.Invoke(Context context)\r\n at Timetracker.Web.Middleware.ApiMiddleware.ApiErrorWrapperMiddleware.InvokeCore(HttpContext context, IApiErrorWrapper errorWrapper) in C:\\a\\3\\s\\TimetrackerOnline\\TimetrackerOnline.Web\\Middleware\\ApiMiddleware\\ApiErrorWrapperMiddleware.cs:line 49" } } }
My guess is that since we're on "billable by default", editinh time tries to set it as unbillable for them.
Can you check this issue please ?
Thanks!
-
Hi Jean-Sebastien!
Thank you for your message and my apologies for the issues you are experiencing.
It looks like this issue is connected with our today's release with improvements in "Billable" feature. We've disabled it until we will find the root cause. Could you please confirm that everything is working fine now?Regards,
Maxim -
Hi Maxim, it does solve the problem for now.
As I said, I'm pretty confident it has to do with user not having the right to edit billable time and display of billable toggle (which sets it to off in editing).
When setting it to Team level, user has the right and it does work, but we see that billable is now Off instead of On in the Worklog edit panel (api shows it at On in underlying data) -- which seems to be the root cause.
Thanks!
Please sign in to leave a comment.
Comments
2 comments