Is Binary Table structure changed in Tridion 2011 SP1 - tridion

We did a upgrade from Tridion 5.3 to Tridion 2011 SP1. While checking the Broker database tables we have found that structure and name of BINARIES table is changed.
In Tridion 5.3 we had table called BINARIES with columns PATH and URL, But when we check the same in Tridion 2011 SP1 we cannot find the BINARIES table, rather we have table BINARY which don't have column PATH and URL. In which table we can find PATH and URL columns. Which table is updated when we publish Binary content from Tridion.

The PATH and URL columns are now in the BINARYVARIANTS table.
But be careful of introducing such dependencies on the database structure. SDL publishes an API for accessing the Content Delivery database and most use-cases can be met by using this API.
One of the main advantages of sticking to this public API is that your code will largely be insulated from upgrade problems as the one you are experiencing here. SDL spends considerable effort to keep the API kept backwards compatibly between product releases, while the database structure is changed "at will".

Related

Issue accessing folder in Tridion 2011 SP1

After upgrade from Tridion 5.3 to Tridion 2011 SP1, we found that we are not able to access Flash folder from Tridion GUI. Whenever we click on that folder it throws below error and do not display any content, in fact there are more than 100 flash files in that folder.
(80040000) ' ' is an unexpected token. The expected token is ';'. Line 1, position 50.Unable to get list of SDL Tridion Content Manager items.
System.Xml.XmlTextReaderImpl.Throw(Exception)
System.Xml.XmlTextReaderImpl.Throw(String,String[])
System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken(String,String)
System.Xml.XmlTextReaderImpl.ThrowUnexpectedToken(Int32,String,String)
System.Xml.XmlTextReaderImpl.HandleEntityReference(Boolean,EntityExpandType,Int32&)
System.Xml.XmlTextReaderImpl.ParseAttributeValueSlow(Int32,Char,NodeData)
System.Xml.XmlTextReaderImpl.ParseAttributes()System.Xml.XmlTextReaderImpl.ParseElement()
System.Xml.XmlTextReaderImpl.ParseElementContent()System.Xml.XmlTextReaderImpl.Read()
System.Xml.XmlLoader.LoadNode(Boolean)System.Xml.XmlLoader.LoadDocSequence(XmlDocument)
System.Xml.XmlLoader.Load(XmlDocument,XmlReader,Boolean)
System.Xml.XmlDocument.Load(XmlReader)
System.Xml.XmlDocument.LoadXml(String)
Tridion.ContentManager.Data.AdoNet.ContentManagement.ItemDataMapper.CreateBinaryContentData(IdentifiableObjectData,FieldDictionary)
Tridion.ContentManager.Data.AdoNet.ContentManagement.ComponentDataMapper.ReadPost(TcmUri,FieldDictionary)
Tridion.ContentManager.Data.AdoNet.IdentifiableObjectDataMapper.Read(TcmUri,IDataRecord,IDictionary`2)
Tridion.ContentManager.Data.AdoNet.ContentManagement.OrganizationalItemDataMapper.GetListItemsPost(IDataReader,TcmUri,OrganizationalItemItemsFilterData)
Tridion.ContentManager.Data.AdoNet.ContentManagement.OrganizationalItemDataMapper.Tridion.ContentManager.Data.ContentManagement.IOrganizationalItemDataMapper.GetListItems(TcmUri,OrganizationalItemItemsFilterData)
Tridion.ContentManager.ContentManagement.OrganizationalItem.GetListItemsData(OrganizationalItemItemsFilter)
Tridion.ContentManager.ContentManagement.OrganizationalItem.GetListItemsStream(OrganizationalItemItemsFilter)
Tridion.ContentManager.BLFacade.ContentManagement.OrganizationalItemFacade.GetListItemsXml(UserContext,String,ListFilter,ListColumnFilter)
Tridion.ContentManager.BLFacade.ContentManagement.OrganizationalItemFacade.GetListData(UserContext,String,EnumListKind,ListColumnFilter,String)Folder.GetListItems
This is a tricky one, probably best served by SDL Customer Support. However, if you have access to the server directly, I would try pasting the URI of the folder in question into Internet Explorer (this must be on the CMS server itself). This should give you the XML representation of the folder, and may give you some clues. Perhaps you can post that XML in your question also.
We encountered this error when we upgraded from SDL Tridion 2009 to SDL Tridion 2011.
The resolution that worked for us was removing the Linked Schema from the Folder, refreshing and then re-attaching the linked schema.

Does the BinaryFactory work for binaries on the file system?

I'm trying to read the binary data of a published binary using the following code:
Tridion.ContentDelivery.DynamicContent.BinaryFactory factory = new BinaryFactory();
BinaryData binaryData = factory.GetBinary(uri.ToString());
This worked fine, until I deployed it in an environment where the binaries are stored on the file system rather than the broker database. Now, the BinaryData is always null, even though I'm sure that the file exists.
Is it mandatory to store your binaries in a database if you want to use the BinaryFactory like this? Or am I missing something?
I just ran some tests on my SDL Tridion 2011 SP1 HR1 environment, and can confirm that BinaryData is populated (i.e. not null and contains values) when my binaries are on the file system. I used your code sample, and just added a valid URI of a binary that is used on a page on my website. I am not sure what is different between our environments, my only thought would be to check that BinaryMeta is deployed to your Broker Database (although if this makes a difference I would think it is a bug).
The ItemTypes node of my cd_storage.xml node is as follows:
<ItemTypes defaultStorageId="defaultdb" cached="true">
<Item typeMapping="Binary" storageId="defaultFile" cached="true"/>
</ItemTypes>
So everything except the binaries are in the DB.
I am not sure what version of SDL Tridion you are using (and i have no idea if it would impact this), but I recently heard that storing any metadata on the file system is no longer supported as of 2011 SP1.

TaxonomyDAO is set to File System, which is not supported

I am running Tridion 2011 SP1 and am getting the following warnings in my cd_core.xxxx.xx.xx.log file.
2012-10-17 12:37:50,298 WARN FSTaxonomyDAO - TaxonomyDAO is set to File System, which is not supported. Check your bindings settings and/or license file.
I have removed the following element from the cd_deployer_conf.xml
<Module Type="TaxonomyDeploy" Class="com.tridion.deployer.modules.TaxonomyDeploy"/>
but I am still getting warnings.
I think this problem is causing many of my multimedia components to fail when publishing. If fixing the cause of these warnings doesn't help then I'll have at least narrowed it down.
edit
I forgot to mention that I am using the File System as the Content Data Store
The storage bindings are in cd_storage_conf.xml. You need to check in storage config and should be storage to db. Also you should not remove from deployer if you are using taxonomy.
Update:
Taxonomy storage to file system bindings is not supported as far as I Know it can be only to DB, it is the same from release 2009 and What you are seeing is the WARNING message that you are using non supported. I am not sure if you can disable this binding.
Also, Metadata stored on the local file system is deprecated as of SDL Tridion 2011 SP1, in favor of storage of metadata in the database. SDL Doc reference link.

Does PublishTransactionsFilter exist on Tridion versions before 2011?

I am trying to use Alex Klock's solution with regards to querying the publishingqueue to see if in item is already still in it. His post about it is here: http://www.codedweapon.com/2012/03/tridion-publishengine/
I am using Tridion 2009 SP1, but it seems I don't have PublishTransactionsFilter available in my code abse. In the top of my file I did include: using Tridion.Contentmanager.Publishing;
Any exmaple on how to get something similar to work in Tridion 2009? Especially the PublishEngine.GetPublishTransactions method. I can't find a similar method in the 2009 API. Only methods which need a specific TCMUri or XML.
You will need to use the ManagementInfo Class which is documented in the 'Templating and Customization Manual TOM 2009 SP1.chm' help file that comes SDL Tridion 2009.
To quote:
The ManagementInfo object supports the following methods:
GetListPublishQueue Gets a list of items in the publishing queue(s) or
scheduler. GetListPublishTransactions Gets a list of publish
transactions
GetListPublishQueue:
Summary - Gets a list of items in the publishing
queue(s) or scheduler.
These classes and methods are contained in the COM version of the TOM DLL so you will need to use Interop to access this from Microsoft.NET
Yes you found it yourself but indeed just to confirm, the GetPublishTransactions method is specific to SDL Tridion 2011.
The code on the link you provided is using the 2011 API of looking into the queue.

How to Get attachments Associated with artifacts in SourceForge Enterprise Edition

We are using SourceForge Enterprise Edition 4.4 in one of our project.
My question is, in CollabNet SFEE (SourceForge Enterprise Edition 4.4), how will we get attachments associated with an Artifacts Using SFEE SOAP API?
We have made our own .net 2.0 client. We are not using .net SDK provided by Collabnet,
If you commit with a message you can add "[artf1000]" (where artf1000 is your artifact number) to the beginning or end of your commit message. Then it will associate to that artifact you can also do this with documents using doc1000, to get the id of the item you can use the URL it is what is after the http://sfeeserver/sf/go/.
Documents and artifacts are the only item I have used this for so I am not sure about other types of links, but I would imagine anything that has a /go/ID could be referenced by the ID.
ie:
http://sfeeserver/sf/go/artf1000
http://sfeeserver/sf/go/doc1000
Edited to add:
I have seemingly successfully tried this with releases, tasks, and discussions as well.
You can cheat a little bit and have a look at the scripts from SFEE. Log into your SFEE via SSH and take a look at the following script:
/usr/local/sourceforge/sourceforge_home/integration/post-commit.py
Maybe it helps...

Resources