Database syncing tool for Umbraco
uSync is a Umbraco package that reads and writes your Umbraco settings to and from disk. This allows you to source control and deploy changes you make inside Umbraco.
Database syncing tool for Umbraco CMS
Home Page: https://jumoo.co.uk/usync/
License: Mozilla Public License 2.0
Database syncing tool for Umbraco
uSync is a Umbraco package that reads and writes your Umbraco settings to and from disk. This allows you to source control and deploy changes you make inside Umbraco.
Reporting new values in content doesn't always show them when the properties are also new.
4467344 Improves the identifcation of content properties where properties are in the target but not in the current (so new values)
During an import - you may see EmptyContainer Delete messages, even though the containers are not empty (and they do not get deleted).
these events shouldn't happen 49f249b fixes this
Hi Kevin. I'm encountering the following with uSync8 and Umbraco 8.
Import of new data types fails with NullReferenceException; please see stack trace below. Report view shows 0 changes listed for these problematic types. If I create a data type with the same name, so the sync becomes an update, the import works fine. Issue is specific to data types.
Umbraco 8.0.0-alpha.58.2266
USync8 8.0.0-alpha61
2019-02-20 17:32:01,698 [P23312/D3/T71] INFO uSync8.BackOffice.uSync8BackOffice - Running Import: DataTypes
2019-02-20 17:32:01,730 [P23312/D3/T71] ERROR uSync8.BackOffice.Controllers.uSyncDashboardApiController - Unhandled controller exception occurred for request 'https://taxcycle.local/umbraco/backoffice/uSync/uSyncDashboardApi/import'
System.NullReferenceException: Object reference not set to an instance of an object.
at uSync8.BackOffice.uSyncService.Import(String folder, Boolean force, SyncEventCallback callback)
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_2.b__2(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ExceptionFilterResult.d__6.MoveNext()
Describe the bug
Templates are not imported under the correct master. Using Beta 4.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The 2 nested templates should be displayed as child templates under master in the tree in the backoffice. But the homepage template is created at the root level and only the "Page 2" template gets created under master.
Additional context
The import seems to run in alphabetic order so when "homepage" is created "master" does not yet exist so the import creates it as a root template. The solution would be to import the items per level as the usync config file for the nested templates does correctly indicate they are level 2 and have master as their parent.
Can I export data elements from a 7.10.4 site, using uSync 6, and then import those data elements into an 8.0.1 site, using uSync 8?
Thanks,
Lee
Could we have an action type for "Move", just like there is for "Delete"?
Sometimes I want to tidy up the data types by moving related items into a folder, and it would be nice if that was reflected in uSync too.
Right now I can move the data type, do an export, move the files to a clone, and do an import, but then it will not actually move the datatype.
using the flat file structure, means all the settings files for each type are stored in a single folder, this reduces the risk of long file name issues.
if this setting is also used without guid file names, then its possible that you can have a clash, if for example you have two about-us pages, their file names would be about-us.config and the last write would win.
f59a3c3 fixes this.
at its heart uSync has a collection of Serializers, that are responsible for getting bits of Umbraco in and out of XML. In the current version these are loaded by a singleton at start up and then accessed when needed.
Looking at Umbraco 8 and the best way to do this I think using Compositions and A Collectionbuilder is the way to go - so then we can build a collection like so:
// register *all* serializers, except those marked [HideFromTypeFinder]
composition.WithCollectionBuilder<USyncSerializerCollectionBuilder>()
.Add(() => composition.TypeLoader.GetTypes<IUSyncSerializer>());
Then in theory when we need to we can go off and get the serializer we require - and this is where it gets funky.
each serializer will serialize a type of umbraco object (e.g IContentType) and so the return type of the functions in the Interface will change based on the type.
Ideally we want to do this with generics - so each serializer would impliment the Serializer class based on their type.
public interface ISyncSerializer<TObject>
where TObject : IEntity
{
SyncAttempt<XElement> Serialize(TObject item);
SyncAttempt<TObject> Deserialize(XElement node, bool force);
bool IsCurrent(XElement node);
}
So for example...
[USyncSerializer("B3F7F247-6077-406D-8480-DB1004C8211C", "ContentTypeSerializer")]
public class ContentTypeSerializer : USyncSerializerBase<IContentType>, ISyncSerializer<IContentType>
{
public Type UmbracoObjectType => typeof(IContentType);
public override SyncAttempt<XElement> Serialize(IContentType item)
{
throw new NotImplementedException();
}
public override SyncAttempt<IContentType> Deserialize(XElement node, bool force)
{
throw new NotImplementedException();
}
public override bool IsCurrent(XElement node)
{
throw new NotImplementedException();
}
}
there are few issues i haven't resolved yet ...
composition.TypeLoader.GetTypes
to load a generic interface ??LazyCollectionBuilderBase
I am not sure we can load a generic type their either.TypeLoader.GetAttributedTypes
but insider our collectionBuilder ? what do we say the type is because that needs a non-generic type?At the moment - this is all that is in this repo - see : https://github.com/KevinJump/uSync8/tree/master/uSync8.Core/Serialization for details so far
Describe the bug
A content type composed of multiple aggregations is imported without its components.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The import would correctly assign the composition to the Home page document type.
As described here :
https://our.umbraco.com/forum/umbraco-8/99105-nucache-500-error-after-deploy
after a uSync import/deploy you might see:
System.IndexOutOfRangeException: Index points outside the properties array, which means the properties array is corrupt.
At this time, we are not sure if this is a uSync or Umbraco issue, this is a placeholder for our investigations.
Note: the post says 8.1.1 but it might be a pre 8.1.x release issue
we are unsure if this is related to issue #18
Not Yet Implemented
In uSync 4 you can define a handler group in the settings.
GroupName
this makes it easier to switch between handler settings, on a live/dev setup
Describe the bug
uSync was originally installed as version 8.1.0 in Umbraco 8.1
Over time things have been updated to Umbraco 8.1.2 and uSync 8.1.1
However in the uSync section in the back office, uSync still says that version 8.1.0 is installed. Checking DLL's etc 8.1.1 is definitely the version installed.
Expected behavior
I'd expect uSync to tell you that version 8.1.1 is installed not version 8.1.0
Desktop (please complete the following information):
Applies to local version of site, as well as 3 environments on Azure.
Add Events for bulk actions (e.g starting/completing an import) so people can trigger on them, and do things they may want to before and after the import
Events:
When you do a full import of datatypes (especially with Models builder in PureLive
Mode) - the import might hang:
Running in debug we get this error :
System.Runtime.Serialization.SerializationException
HResult=0x8013150C
Message=Type is not resolved for member 'Umbraco.Core.Security.UmbracoBackOfficeIdentity,Umbraco.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=null'.
Source=
StackTrace:
This appears to be coming from the internal serialization within Umbraco when the cache event is triggered.
we have a debug option to use batch saving, that is don't save the datatypes individually but in one block when at the end, using dataTypeService.Save(items) - but this also causes the error.
turning models builder off live mode, makes this largely go away - but that just might be because it reduces the number of cache rebuilds in Umbraco.
the datatype serializer updates the datatypes here
https://github.com/KevinJump/uSync8/blob/master/uSync8.Core/Serialization/Serializers/DataTypeSerializer.cs#L34
the save happens in the parent class or in the handler if we are doing a 'batch' save.
So all saves go through these two save functions here :
https://github.com/KevinJump/uSync8/blob/master/uSync8.Core/Serialization/Serializers/DataTypeSerializer.cs#L181
the issue was already happening when using hte direct save in DeserializeCore that is now commented out
Exported content does not include the selected template. With content import you do not get the selected template but the default template, if you have multiple templates attached to a DocumentType.
uSync's handling of trashed content and media isn't 100%
items will move in and out of the trashed content folder, when synced, but not all the right methods are being called so we could potentially be missing internal umbraco events
Fix: a6028aa addresses this
I'm migrating from Umbraco 7.5.4 to 8.0.2. And is using uSync for the media and content. At first I was simply doing it wrong, placing media at incorrect locations etc. But I now believe/hope I am no longer the problem :)
I have already downloaded the source for uSync 8, included the projects as project references instead of the ones from the NuGet package and stepped my way through the content import process.
The import fails in ContentSerializerBase.cs when calling IsValid(XElement node). The node needs a key, alias and info element, and my nodes have neither. My config files look like this:
<?xml version="1.0" encoding="utf-8"?> <Image guid="6e7b4a60-1018-445a-84ae-e09d1a530732" id="5829" nodeName="an-logo_footer.png" isDoc="" updated="2018-12-07T14:32:55.9130000Z" parentGUID="6bab069e-4251-4714-a879-2fb09518a019" nodeTypeAlias="Image" path="-1,5816,5829"> <alt></alt> <umbracoBytes><![CDATA[5016]]></umbracoBytes> <umbracoExtension><![CDATA[png]]></umbracoExtension> <umbracoFile><![CDATA[{src: '/media/3560/an-logo_footer.png', crops: [ { "alias": "testimonial", "width": 65, "height": 65 }, { "alias": "Huge Image Banner", "width": 577, "height": 590 }, { "alias": "Page Header", "width": 1600, "height": 260 } ]}]]></umbracoFile> <umbracoHeight><![CDATA[49]]></umbracoHeight> <umbracoWidth><![CDATA[150]]></umbracoWidth> </Image>
The GetKey method returns empty guid as string, GetAlias() returns empty string and the Info element is null (because it doesnt exist)
Is there a special way to import older media items, or is this a bug?
Not sure if this is a bug or what exactly is going on, but on a few Umbraco v8 sites with uSync 8 installed (couple of different versions but 8.2.3 is included)
Data Types have been reporting that all of them have changed, however when examining them there are no actual changes that can be found.
For example, this is directly after an import:
It appears that it is trying up date sort orders, but no idea why.
These examples are from a v8.1.5 site.
It's a bit misleading seeing lots of changes that aren't "real" when doing a deployment, not sure what is causing it.
Describe the bug
When importing media content usync content an error is reported for images.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Any type of media should be importable
Additional context
Looking at the serialized media format it seems that the root node of a media content is always
and that the media deserializer assumes that it will find the actual type would be Image or Folder, etc...
I did a quick successful test to import media images replacing the root node with .
As a workaround for now since we are early in development we'll use this workaround to allow us to import medias.
I'd love it if the uSync UI was similar to the Sql Server comparison tools built into Visual Studio:
The Content Type based serializers (ContentTypes, MediaTypes, MemberTypes) all do a double pass of the settings, this can result in double saves.
this change aa9f86a makes the saves in the handlers conditional on things actually changing, (isDirty) which means they should save a lot less.
When its in listening mode , usync keeps track of things people delete and puts them in a uSyncAction.config file. On import this file is read, and things that match (usually by key) are deleted from the target site.
It doesn't have to work like that, we could just put the deletes inline - by replacing the config file for an item with a file marking its deletion, then everything is just in place - deletes happen when uSync stumbled into the delete file.
Describe the bug
When importing content with ContentEdition, parent ids and the content heirarchy are not respected. All content is important at the root level and the ids of the imported content are reset. Also, the documents are imported every time an import is run, resulting in duplicates. Please see screenshot.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Would be great if there was a way to import/respect the content heirarchy.
I have two Umbraco8 sites. One for development and second for testing. I have installed uSync, uSync.Core, uSync.ContentEdition and uSync.Backoffice.Core to the both of them. I set the settings Export on startup, import on startup, export on save on both of them. I have published content on the first one with text and images. First I started the first one and I went to usync and exported everything. Then I copied the View, Media and the Usync folder, the only ones I have to copy, and I copied them to the test site's folder. Then I imported them in the Testing site. The problem is next. In the Content Tab in the BackOffice, published Content Pages' names are faded out and they are proper document types but they are empty without text and images.
What can be the problem?
Importing of datatype which uses custom property editors fail. I get the following error message.
"Import Fail: Cannot find underling datatype for Domain picker"
Steps to reproduce the behavior:
{ "propertyEditors": [ { "alias": "DomainPicker", "name": "Domain picker", "icon": "icon-list", "editor": { "view": "~/App_Plugins/DomainPicker/view.html" } } ], "javascript": [ "~/App_Plugins/DomainPicker/controller.js" ] }
The issue here stems from how the grid mapper extracts an alias from the view. The problem is that the view in the grid configuration often ends in ".html" which means the alias will always be "Umbraco.Grid.html" for controls with views like that. Take the following configuration for example.
{
"name": "Blog Detail",
"alias": "blogDetail",
"view": "/App_Plugins/LeBlender/editors/leblendereditor/LeBlendereditor.html",
"icon": "icon-defrag color-black",
"render": "/App_Plugins/LeBlender/editors/leblendereditor/views/Base.cshtml",
"config": {
"frontView": "BlogDetail",
"renderInGrid": "1",
"editors": [
{
"name": "Body Text",
"alias": "bodyText",
"propretyType": {},
"dataType": "ca90c950-0aff-4e72-b976-a30b1ac57dad",
"description": "blog detail"
}
]
}
}
No need to worry about the leblender reference. I'm using a customized version of it that runs in umbraco 8.
The problem code can be found here. It grabs all the text after the last "." to generate the alias, which in this case leaves only "html." Removing the ".html" for strings that end with it should resolve this issue.
Sometimes you will get false posistive content changes, when the content item has empty values.
this is because the empty value sometimes comes to usync as an empty value and sometimes it isn't included , so the xml can be diffrent.
65d8217 adds an extra bit of XML to markate an empty value node - this means we will get better matches and less false posistives when checking content.
Adds in extra checks against the config of a datatype so we don't save the datatype config unless its absolutely necessary
I have the following set in my usync8.config:
<Handler Alias="dictionaryHandler" Enabled="true" />
However translation items are not being generated.
At the moment I am minded to move Dictionary Items into Content Edition because they are content.
but they also can drive a lot of settings, buttons etc, so it's a open question
Hi, when trying to import settings we receive the following error (see bottom).
I changed the 'Connection timeout' property on connection string but it had no effect. It seems to rather be SQL's CommandTimeout that should be increased.
Thank you
System.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteScalar() at Umbraco.Core.Persistence.FaultHandling.RetryPolicy.ExecuteAction[TResult](Func
1 func) in d:\a\1\s\src\Umbraco.Core\Persistence\FaultHandling\RetryPolicy.cs:line 172
at NPoco.Database.ExecuteScalarHelper(DbCommand cmd)
at NPoco.Database.ExecuteScalar[T](String sql, CommandType commandType, Object[] args)
ClientConnectionId:809b4e9e-1d0d-49ff-8ac3-0386f4539795
Error Number:-2,State:0,Class:11
ClientConnectionId before routing:fbc7fa39-f3d6-4b4e-8d32-f9b15aa7cf82
Routing Destination:e0688902d0bd.tr3.canadacentral1-a.worker.database.windows.net,11133`
The functionnality "Export on Save" of Usync 8 generate an error. The document is saved, but it's not published.
Error when publichig a document - > Server error : Contact administrator, see log full details
Object reference not set to an instance of an object.
As previously said, the document is fully save, but since the error happend on the save event, it's not published. When the "Export on Save" is deactivated, everything works fine.
Sometimes running a report will say there is a change, but there will be nothing when you look in changes.
in short - the tracker is work in progress.
at the moment usync does two things for tracking changes.
the quick check
the full check
Issues at the moment :
Placeholder for bb215c6
An issue in localization service means requesting "en-US" language can return "en" language instead, in the worst case this causes uSync to delete the wrong language, which can loose content.
Workaround is to check that the langauge you requested is infact the one you got back.
Hi,
In the latest version, on line 38 of uSyncDashboardController the current code expects result.data.addOnString, but result.data contains AddOnString - which is causing a good deal of errors in console.
Describe the bug
When importing one of the documents, I get an error:
Import Fail: Object reference not set to an instance of an object.
Шt looks like one of the operations exceeds the timeout.
I have caught look in database:
Directly Blocked Transactions:
Blocking SQL Statement
SELECT [umbracoDocument].[nodeId] AS [NodeId], [umbracoDocument].[published] AS [Published], [umbracoDocument].[edited] AS [Edited] , [umbracoContent].[contentTypeId] AS [ContentDto__ContentTypeId], [umbracoContent].[nodeId] AS [ContentDto__NodeId] , [umbracoNode].[id] AS [ContentDto__NodeDto__NodeId], [umbracoNode].[uniqueId] AS [ContentDto__NodeDto__UniqueId], [umbracoNode].[parentId] AS [ContentDto__NodeDto__ParentId], [umbracoNode].[level] AS [ContentDto__NodeDto__Level], [umbracoNode].[path] AS [ContentDto__NodeDto__Path], [umbracoNode].[sortOrder] AS [ContentDto__NodeDto__SortOrder], [umbracoNode].[trashed] AS [ContentDto__NodeDto__Trashed], [umbracoNode].[nodeUser] AS [ContentDto__NodeDto__UserId], [umbracoNode].[text] AS [ContentDto__NodeDto__Text], [umbracoNode].[nodeObjectType] AS [ContentDto__NodeDto__NodeObjectType], [umbracoNode].[createDate] AS [ContentDto__NodeDto__CreateDate] , [umbracoDocumentVersion].[id] AS [DocumentVersionDto__Id], [umbracoDocumentVersion].[templateId] AS [DocumentVersionDto__TemplateId], [umbracoDocumentVersion].[published] AS [DocumentVersionDto__Published] , [umbracoContentVersion].[id] AS [DocumentVersionDto__ContentVersionDto__Id], [umbracoContentVersion].[text] AS [DocumentVersionDto__ContentVersionDto__Text], [umbracoContentVersion].[versionDate] AS [DocumentVersionDto__ContentVersionDto__VersionDate], [umbracoContentVersion].[nodeId] AS [DocumentVersionDto__ContentVersionDto__NodeId], [umbracoContentVersion].[userId] AS [DocumentVersionDto__ContentVersionDto__UserId], [umbracoContentVersion].[current] AS [DocumentVersionDto__ContentVersionDto__Current] , [pdv].[id] AS [PublishedVersionDto__Id], [pdv].[templateId] AS [PublishedVersionDto__TemplateId], [pdv].[published] AS [PublishedVersionDto__Published] , [pcv].[id] AS [PublishedVersionDto__ContentVersionDto__Id], [pcv].[text] AS [PublishedVersionDto__ContentVersionDto__Text], [pcv].[versionDate] AS [PublishedVersionDto__ContentVersionDto__VersionDate], [pcv].[nodeId] AS [PublishedVersionDto__ContentVersionDto__NodeId], [pcv].[userId] AS [PublishedVersionDto__ContentVersionDto__UserId], [pcv].[current] AS [PublishedVersionDto__ContentVersionDto__Current] , COALESCE([ccv].[name],[umbracoNode].[text]) AS variantName FROM [umbracoDocument] INNER JOIN [umbracoContent] ON [umbracoDocument].[nodeId] = [umbracoContent].[nodeId] INNER JOIN [umbracoNode] ON [umbracoContent].[nodeId] = [umbracoNode].[id] INNER JOIN [umbracoContentVersion] ON ([umbracoDocument].[nodeId] = [umbracoContentVersion].[nodeId]) INNER JOIN [umbracoDocumentVersion] ON ([umbracoContentVersion].[id] = [umbracoDocumentVersion].[id]) LEFT JOIN [umbracoContentVersion] [pcv] INNER JOIN [umbracoDocumentVersion] [pdv] ON (([pcv].[id] = [pdv].[id]) AND [pdv].[published] = @0) ON ([umbracoDocument].[nodeId] = [pcv].[nodeId]) LEFT JOIN [umbracoContentVersionCultureVariation] [ccv] INNER JOIN [umbracoLanguage] [lang] ON (([ccv].[languageId] = [lang].[id]) AND ([lang].[languageISOCode] = @1)) ON ([umbracoContentVersion].[id] = [ccv].[versionId]) WHERE (([umbracoNode].[nodeObjectType] = @2)) AND ([umbracoContentVersion].[current] = @3) AND ([umbracoContent].[contentTypeId] IN (@4)) ORDER BY [ContentDto__NodeDto__Path] , [ContentDto__NodeDto__NodeId] OFFSET @5 ROWS FETCH NEXT @6 ROWS ONL
Blocked SQL Statement
UPDATE umbracoLock SET value = (CASE WHEN (value=1) THEN -1 ELSE 1 END) WHERE id=@
Are there any plans to bring a command line solution for Usync and Umbraco 8?
I've read about chauffeur for Umbraco 7 and it sounds like something that would be very beneficial to have in 8
Some of the Angular code isn't using relative paths to get other files, (for example /app_plugins/uSync8/settings/default.html
)
this fails if Umbraco is installed in a subfolder,
need to reference the app path from the Umbraco Settings.
Hi.
When exporting configs, the existing folders and files are not removed. I'm using Umbraco v8.0.2 and uSync release version (8.0.0)
Steps to reproduce: files not removed
Steps to reproduce: folders not removed
Content is currently published or not, we are not doing anything with the published state for each culture.
b021d9c addresses this, and turns on culture based publishing of content.
Describe the bug
After updating umbraco to v7.15.0 usync throws a '[MissingMethodException: Method not found: 'Umbraco.Core.Models.EntityBase.IUmbracoEntity Umbraco.Core.Services.IEntityService.GetByKey(System.Guid, Boolean)'.]'
To Reproduce
Update Umbraco to v7.15.0.
Run the site.
I have checked the Umbraco code and the IEntityService.GetByKey(System.Guid, Boolean) method is there. The site was working with 7.14.0.
when importing multiple languages, the import could fail. Possibly the fallback language is not yet imported. Invisible in the report, and mess up totally the content import.
In a content element, an empty description will come back as null, (not empty string)
9d64334 makes sure an empty string in the config is treated as null, so we get a better match and one less false positive.
Not Implimented
Per handler actions allow you to turn a handler on/off for specific actions
e.g to have a handler only work on import
<Handler Alias="dataTypeHandler" Enabled="true" actions="Import"/>
the default is ALL.
uSync 8 has a different file format to usync 4 - as such you cannot just upgrade and have the files still work.
There are a many internal changes (espeically around content items) within Umbraco, and we have used this oppertunity to make the usync format consistant across all items.
Most if not all of the same information is stored in the files and as they are xml there should be some form of transformations that could be built to migrate the information from the old format to the new one, but that hasn't been built (yet)
As per uSync 4 you should beable to override the main settings in the web.config
https://our.umbraco.com/packages/developer-tools/usync/usync/99117-usync-8-wbconfig-appsettings-overides
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.