13

Starting off this massive debate: (144) Yammer : Dynamics 365 Business Central Development : View Conversation


I have another solution for this problem.


The Problem: we need to show the information that was Saved accurately without interfering with the existing customers experience.

At the same time we want to expand on the functionality of the system to assist users not losing any data they input.


The question we need to ask ourselves is Why? Is this because we don't want users to lose work in progress if we get an error? If so, read ahead:


One solution I imagine could be (and I can come with others as well if you'd ask me - open to discussion):

  • Would the (Edit in progress) not be sufficient and getting it reset to Saved when a commit in the database happens? If not, this could be further extended as follows:
  • keeping the BC v20 record behaviour the same (no modify execution after each field changed)
  • Saving the edited fields (before the v20 onmodify is triggered - user leaving the record, etc) in a generic table (that has a user/sessionid/record ID/FieldID as Primary Key plus timestamp/unsaved field values and a Currently Editing flag for every table and field). This can be kept outside the actual database (another helper azure db tied up to each BC database, with a retention policy driving the clearing of old data after x months). When the record modify is executed, this data would be removed automatically.
  • when anyone goes back to the record, a factbox could show the data in this table and users can apply these previous InProgress changes to the record, or remove them entirely, or the will simply be removed when the record is deleted (ex: sales header/line transformed into a posted document).
  • This would allow users to continue working with the same experience until v20, while at the same time accurately having a status displayed at the top screen and with the added benefit of having collaborative work with the other users.

Further to this (the collaboration value of this approach):

  • a click on the userID could open up a Teams window with the context and this would allow the current editor of the record quickly chat to their peer about the correct value in the record


Category: General
STATUS DETAILS
Needs Votes
Ideas Administrator

Thank you for this suggestion! Currently this is not on our roadmap. We are tracking this idea and if it gathers more votes and comments we will consider it in the future. Best regards, Business Central Team

Comments

R

I like to see the idea I posted growing into something more, such as a collaboration tool for interested parties (depending on the current record's context).

Imagine someone going to modify a record and the previous SystemCreatedBy and SystemModifiedBy are 2 different users to the current one, making up 3 users in total who have worked on that record that we know of already (without any change logs taken into account).

Now wouldn't a group chat box be great to have if the current user wants to check the accuracy of his new information on the record?

Of course I expressed my idea in a language that we can all understand (factbox being specific to BC) but it doesn't have to be a factbox.

In fact having a Chrome/Edge extension would resolve the issue with not being able to detect if a user closes the browser, because with that browser extension enabled you can control if the window is closed or the session is lost and you can pop that question up to make sure the user is aware their session will expire (similar to what Amazon Prime is doing to check if you're still watching), also on closing the browser - same thing popup with questions.


To be honest the more I think about it the more I see it as a non-structured approach to assist editing data in a data structured environment.


Category: General

R

There there are two big issues in your idea:

  1. Execution Order: If you want to reapply the saved record, you have also to call the validates again in the order they were originally called. ( it's a big difference if you call "Unit Price"- OnValidate or "Line Amount"- Onvalidate first or last.). So the only way to get your idea run, is some type of change log that you write, and that you reapply field by field later.
  2. The reapply of the change log might not be possible if you try to reapply it later, because f.e. the quantity you entered in "Sales Line" isn't available anymore, or the Serial No. you wanted to use is taken by another order.


Category: General

R

To put it in perspective:

The actual status button can have 2 circular arrows and a text called Sync, acting as a button if there is unsaved data on the page.

That is the most we can do with keeping a solution sane from a performance point of view and also storing cached information in the factbox area.

Category: General

R

Further solutions for instant save:


If a user really wants something instantly saved, a Sync button can be added that would sync these changes to the database. More of a push rather than a default change after each field.

However the power with this factbox is that the data would be stored in a different adjacent datastore and act as a cache that ensures no-one loses any work, together with the Sync button it would provide an instant save if really needed (if a user wants to block a customer/vendor/item and take effect immediately).

Category: General