This happened to us today as well on Forms 10.3.1. Its very frustrating when a process diagram is almost completely lost when attempting to save it. Can I get a status update from Laserfiche as to where they are with an improvement to the save process? It seems a better design would be to not overwrite the previous process until the new process save has been completely committed to storage on the server. Version control in Laserfiche Forms (like in Workflow) would be great as well.
Laserfiche Forms has encountered an error while saving process data. [LFF2602-ProcessDataSavingError]
Details:
URL: /Forms/api/routing/save
Error: ProcessDataSavingError
Date: 11/02/2018 2:29:24 PM (Central Standard Time)
HTTP Status Code: 400
Business Process ID: 0
User:
IP:
Browser: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Business Process Name:
Stack Trace:
Caught exception: Laserfiche.Forms.CommonUtils.Exceptions.LFFormsException
Message: Laserfiche Forms has encountered an error while saving process data. [LFF2602-ProcessDataSavingError]
at E_Forms.Controllers.BusinessProcessController.SaveRoutingDiagram(String flow)
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult)
Inner exception: System.InvalidOperationException
Message: Multiplicity constraint violated. The role 'cf_bp_step_form_mapping' of the relationship 'Laserfiche.Forms.Entities.FK_bp_stp_frm_mappng_bp_step' has multiplicity 1 or 0..1.
at System.Data.Entity.Core.Objects.EntityEntry.WillNotRefSteal(EntityReference refToPrincipal, IEntityWrapper wrappedPrincipal)
at System.Data.Entity.Core.Objects.EntityEntry.FixupEntityReferenceToPrincipal(EntityReference relatedEnd, EntityKey foreignKey, Boolean setIsLoaded, Boolean replaceExistingRef)
at System.Data.Entity.Core.Objects.EntityEntry.FixupEntityReferenceByForeignKey(EntityReference reference)
at System.Data.Entity.Core.Objects.EntityEntry.EntityMemberChanged(String entityMemberName, Object complexObject, String complexObjectMemberName)
at System.Data.Entity.Core.Objects.Internal.SnapshotChangeTrackingStrategy.SetCurrentValue(EntityEntry entry, StateManagerMemberMetadata member, Int32 ordinal, Object target, Object value)
at System.Data.Entity.Core.Objects.DataClasses.EntityReference.UpdateForeignKeyValues(IEntityWrapper dependentEntity, IEntityWrapper principalEntity, Dictionary`2 changedFKs, Boolean forceChange)
at System.Data.Entity.Core.Objects.DataClasses.EntityReference.UpdateDependentEndForeignKey(RelatedEnd targetRelatedEnd, Boolean forceForeignKeyChanges)
at System.Data.Entity.Core.Objects.DataClasses.RelatedEnd.Add(IEntityWrapper wrappedTarget, Boolean applyConstraints, Boolean addRelationshipAsUnchanged, Boolean relationshipAlreadyExists, Boolean allowModifyingOtherEndOfRelationship, Boolean forceForeignKeyChanges)
at System.Data.Entity.Core.Objects.ObjectStateManager.PerformAdd(IEntityWrapper wrappedOwner, RelatedEnd relatedEnd, IEntityWrapper entityToAdd, Boolean isForeignKeyChange)
at System.Data.Entity.Core.Objects.ObjectStateManager.PerformAdd(IList`1 entries)
at System.Data.Entity.Core.Objects.ObjectStateManager.DetectChanges()
at System.Data.Entity.Internal.InternalContext.GetStateEntries(Func`2 predicate)
at System.Data.Entity.DbContext.GetValidationErrors()
at System.Data.Entity.Internal.InternalContext.SaveChanges()
at Laserfiche.Forms.Routing.FlowObject.DeleteRoutingObjectFromDb(IEntityContext appContext, cf_bp_steps bpStep)
at Laserfiche.Forms.Routing.RoutingProcess.DeltaUpdateRoutingObjectInDb()
at Laserfiche.Forms.Routing.RoutingProcess.UpdateProcessDataToDb(String hostName)
at E_Forms.Models.ViewModels.BusinessProcess.RoutingViewModel.SaveRoutingData()
at E_Forms.Controllers.BusinessProcessController.SaveRoutingDiagram(String flow)