Here are some details on how the proxy items work in 5.3.
Some sample code on how to create a proxy item:
public void CreateProxyItem(string name)
{
Sitecore.Data.Database masterDB = Sitecore.Configuration.Factory.GetDatabase("master");
// getting a proxy template from the template repository
Sitecore.Data.Items.TemplateItem proxyTemplate = masterDB.Templates[Sitecore.TemplateIDs.Proxy];
using (new Sitecore.SecurityModel.SecurityDisabler())
{
// getting referece to the proxy container item
Sitecore.Data.Items.Item proxyContainerItem = masterDB.Items["/sitecore/system/proxies/"];
if (proxyContainerItem != null && proxyTemplate != null)
{
Sitecore.Data.Items.Item proxyItem = proxyContainerItem.Add(name, proxyTemplate);
proxyItem.Editing.BeginEdit();
proxyItem.Fields[Sitecore.FieldIDs.ProxySourceItem].Value = "{F5726884-BDBE-4DDD-9EBE-BB166E68E1EF}";
proxyItem.Fields[Sitecore.FieldIDs.ProxyTargetItem].Value = "{C3F3DBA9-87B3-4EB3-84CF-D75BD7FED626}";
proxyItem.Editing.EndEdit();
}
}
}