/// <summary>
        /// Upgrade version of the provided document
        /// </summary>
        /// <param name="nodeId">Document or Concept nodeId</param>
        /// <returns></returns>
        public async Task <NodeEntry> UpgradeDocumentVersion(string nodeId)
        {
            List <VersionRecord> componentsVersionList = new List <VersionRecord>();
            var nodeInfo = await _alfrescoHttpClient.GetNodeInfo(nodeId);

            var nodeProperties = nodeInfo.Entry.Properties.As <JObject>().ToDictionary();

            int.TryParse(nodeProperties.GetNestedValueOrDefault(SpisumNames.Properties.Version)?.ToString(), out int version);

            // Get all components
            var components = await _nodesService.GetSecondaryChildren(nodeId, SpisumNames.Associations.Components, false, true);

            components.ForEach(x =>
            {
                var properties   = x?.Entry?.Properties.As <JObject>().ToDictionary();
                var versionLabel = properties.GetNestedValueOrDefault(AlfrescoNames.ContentModel.VersionLabel)?.ToString();

                componentsVersionList.Add(new VersionRecord {
                    Id = x?.Entry?.Id, Version = versionLabel
                });
            });

            await _alfrescoHttpClient.UpdateNode(nodeId, new NodeBodyUpdate()
                                                 .AddProperty(SpisumNames.Properties.ComponentVersionJSON, componentsVersionList) //JsonConvert.SerializeObject(componentsVersionList, Formatting.None, _jsonSettings))
                                                 .AddProperty(SpisumNames.Properties.Version, ++version));

            // Create a new version of node
            return(await _alfrescoHttpClient.UpdateContent(nodeId, new byte[] { 01 },
                                                           ImmutableList <Parameter> .Empty
                                                           .Add(new Parameter(HeaderNames.ContentType, MediaTypeNames.Application.Octet, ParameterType.HttpHeader))));
        }