private async Task <RecordEntry> CreateRecord(string folderName, string nodeId, string nodeType, string assocType) { var folderInfo = await GetRMFolder(folderName); var nodeInfo = await _alfrescoHttpClient.GetNodeInfo(nodeId); var properties = nodeInfo.Entry.Properties.As <JObject>().ToDictionary(); int.TryParse(properties.GetNestedValueOrDefault(SpisumNames.Properties.RetentionPeriod)?.ToString(), out int retentionPeriod); DateTime.TryParse(properties.GetNestedValueOrDefault(SpisumNames.Properties.SettleDate)?.ToString(), out DateTime settleDate); var shreddingDate = new DateTime(settleDate.Year + 1 + retentionPeriod, 1, 1); await _alfrescoHttpClient.UpdateNode(nodeId, new NodeBodyUpdate() .AddProperty(SpisumNames.Properties.ShreddingYear, shreddingDate.Year.ToString())); var body = new RMNodeBodyCreate { Name = nodeInfo?.Entry?.Name, NodeType = nodeType, Properties = new Dictionary <string, string> { { SpisumNames.Properties.Ref, nodeId }, { SpisumNames.Properties.ShreddingYear, shreddingDate.Year.ToString() } } }; properties.ForEach(x => { var(key, value) = x; if (!key.StartsWith("ssl:")) { return; } if (key.Equals(SpisumNames.Properties.Pid)) { body.Properties.Add(SpisumNames.Properties.PidRef, $"{value}"); body.Properties.Add(SpisumNames.Properties.Pid, $"RM-{value}"); return; } // Problems only with datetime for now if (DateTime.TryParse(value?.ToString(), out DateTime datetime)) { body.Properties.Add(key, datetime.ToAlfrescoDateTimeString()); } else { body.Properties.Add(key, $"{value}"); } }); var node = await _alfrescoHttpClient.CreateRecord(folderInfo?.Entry?.Id, body); // Create secondary children to orig document/file. It cannot be set from repository to RM await _alfrescoHttpClient.CreateNodeSecondaryChildren(node?.Entry?.Id, new ChildAssociationBody { AssocType = assocType, ChildId = nodeId }); // Set record as complete await _alfrescoHttpClient.CompleteRecord(node?.Entry?.Id); // Call retention date await _alfrescoHttpClient.ExecutionQueue(new ExecutionQueue { Name = "editDispositionActionAsOfDate", NodeRef = $"workspace://SpacesStore/{node?.Entry?.Id}", Params = new ExecutionQueueParams { AsOfDate = new ExecutionQueueParamsAsOfDate { Iso8601 = shreddingDate.ToAlfrescoDateTimeString() } } }); return(node); }