﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>ADAM Blog</title><link>http://blogs.adamsoftware.net</link><description>About ADAM: tips and tricks, how to's and more</description><item><title>How to Reduce the Fixed Costs of Print Catalogs</title><link>http://blogs.adamsoftware.net/Sales_&amp;_Marketing/HowtoReducetheFixedCostsofPrintCatalogs.aspx</link><description>&lt;div&gt;&lt;p&gt;Despite the rapid growth of online shopping and buying, print catalogs are still an important marketing tool for many companies. In the US alone, over 20 billion catalogs were mailed in 2010. Even companies that sell primarily online can benefit from using print catalogs. Research commissioned by the United States Postal Service has shown that catalog recipients are more likely to make a purchase than shoppers who don’t receive them, and catalog recipients typically buy more items and spend more money.&lt;/p&gt;&lt;p&gt;
Nevertheless, marketers are facing growing pressures to make print catalogs more cost effective. Shorter product cycles, new product releases, and changing market conditions can require more frequent catalog updates to keep the information fresh and accurate. And, frequent revisions will obviously increase the costs of using print catalogs.&lt;/p&gt;&lt;p&gt;Most of the costs associated with print catalogs fall into one of three broad categories.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Design/pre-production costs&lt;/li&gt;&lt;li&gt;Print manufacturing costs&lt;/li&gt;&lt;li&gt;Delivery costs (postage)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
Print manufacturing costs and postage are variable costs. They will increase or decrease depending on the number of catalogs that are printed and mailed. Marketers have used a variety of tactics to reduce these costs, including reducing catalog circulation, reducing the number of pages in catalogs, and changing manufacturing specifications (less expensive paper stock, etc.).&lt;/p&gt;&lt;p&gt;
In contrast to manufacturing costs and postage, catalog design and pre-production costs are primarily fixed expenses. Most design and pre-production costs do not vary based on the number of catalogs that are printed and mailed, although some will vary based on the number of unique catalog pages that are created. To reduce these costs, a growing number of companies are implementing software technologies that automate many catalog design and pre-production processes.&lt;/p&gt;&lt;p&gt;
A robust technology solution for automating catalog production will contain two core components.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A &lt;b&gt; product information management system (PIMS)&lt;/b&gt; that provides a central repository for the product information (images, descriptions, prices, etc.) that will be used in the catalog. For global enterprises, the product information management system must be capable of managing multiple versions of the information assets, such as multilingual product descriptions and prices in multiple currencies. In the ideal scenario, the product information system will automatically obtain current product prices directly from the company’s financial management (ERP) software.&lt;/li&gt;&lt;li&gt;A &lt;b&gt;dynamic publishing engine &lt;/b&gt; that enables catalog designers to create stylesheets or templates for catalog pages and include “tags” that create links to the data contained in the product information management system. The dynamic publishing component uses these stylesheets and links to automatically “build” the catalog pages without further human involvement.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
Automating catalog pre-production will dramatically lower the “fixed” costs associated with print catalogs. In addition, catalog automation technologies will significantly shorten the time required to produce catalogs, thus enabling companies to keep catalogs current and fresh.&lt;/p&gt;&lt;p&gt;If print catalogs are an important part of your marketing mix, these technologies are worth a serious look.&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Confirmable custom PIM Studio actions</title><link>http://blogs.adamsoftware.net/PIMS/ConfirmablecustomPIMStudioactions.aspx</link><description>&lt;div&gt;&lt;p&gt;
In a previous post we talked about adding a custom PIM Studio action to the context menu of the category tree.
The action did what is was supposed to do, but had one major downside.
It executed immediately after the context menu was clicked.
That's ok you might think, but what if the user ment to click the menu item above or below our custom action.
The user wouldn't be very happy because all of his products would have been moved.
&lt;/p&gt;&lt;p&gt;
In this post we will see how to avoid executing the action immediately and let the user confirm the action (s)he clicked.
&lt;/p&gt;&lt;p&gt;
Actually it's not that at all hard to do.
Take the code from our previous post.
Notice that the &lt;span class="codetype"&gt;UnclassifyChildProductsAction&lt;/span&gt; inherits from &lt;span class="codetype"&gt;Action&lt;/span&gt;.
Change &lt;span class="codetype"&gt;Action&lt;/span&gt; to &lt;span class="codetype"&gt;ConfirmableAction&lt;/span&gt;.
All we have to do now is add the code for the confirmation.
In fact we don't even have to do that, we only need to tell the &lt;span class="codetype"&gt;ConfirmableAction&lt;/span&gt; what the title and the message of the confirmation box need to be.
For that purpose there is a &lt;span class="codemember"&gt;InitializeConfirmUIElement&lt;/span&gt; you can override.
&lt;/p&gt;&lt;pre name="C#"&gt;
/// &lt;inheritdoc /&gt;
public override void InitializeConfirmUIElement(ActionContext context, IConfirmableUIElement uiElement)
{
 if (!(context.DataItem is Category))
 {
  string message = string.Format("The action of type '{0}' is only available for a dataItem of type '{1}', not for '{2}'.",
   GetType().FullName,
   typeof(Category).FullName,
   context.DataItem.GetType().FullName);
  throw new InvalidOperationException(message);
 }

 base.InitializeConfirmUIElement(context, uiElement);

 uiElement.Title = "Unclassify child products";
 uiElement.Message = "Are you sure you wish to unclassify all child products?";
}
&lt;/pre&gt;&lt;p&gt;
And with that, we're done coding.
All you need to do now is add this action to your configuration and you're done.
&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Creating custom previews for InDesign documents</title><link>http://blogs.adamsoftware.net/DocMaker_Studio/CreatingcustompreviewsforInDesigndocuments.aspx</link><description>&lt;div&gt;&lt;p&gt;
In today's blog post, we consider the following request from one of our partners:
&lt;/p&gt;&lt;p&gt;&lt;cite&gt;
When ingesting InDesign documents into ADAM, we use the InDesign Server media engine that comes with DocMaker to 
automatically create JPEG previews for all pages. InDesign itself however also allows you to export a document as a PDF
or as an SWF movie. These file formats offer a different user experience, e.g. an SWF movie 
allows you to zoom in while a JPEG does not. Is there a way to create and save such previews as additional files 
when you catalog a document in ADAM?
&lt;/cite&gt;&lt;/p&gt;&lt;p&gt;
To create custom file previews with the ADAM provider framework, you typically write a 
&lt;code&gt;MediaEngine&lt;/code&gt; which executes one or more &lt;code&gt;MediaActions&lt;/code&gt;. In this process, you can use the 
DocMaker API to address InDesign Server and create the actual previews. In what follows we outline the implementation
of a custom InDesign preview engine, the corresponding media actions, and a preview player to view the generated 
SWF previews within AssetStudio.
&lt;/p&gt;&lt;p&gt;
Let us start with the media actions. These simple classes contain both the input &lt;code&gt;FileVersion&lt;/code&gt; and the 
output &lt;code&gt;TargetPath&lt;/code&gt;. They are also responsible for saving the generated preview as an additional file in the 
original file version. We need both a &lt;code&gt;CreatePdfMediaAction&lt;/code&gt; and a 
&lt;code&gt;CreateSwfMediaAction&lt;/code&gt;. The two classes are almost identical: the only difference is the extension 
used for the target path. Here is the implementation of the &lt;code&gt;CreateSwfMediaAction&lt;/code&gt;:
&lt;/p&gt;&lt;p&gt;&lt;pre name="C#"&gt;
using System.IO;
using System.Xml;
using Adam.Core.MediaEngines;
using Adam.Core.Records;
using Adam.Tools.IO;

namespace InDesignPreviewMediaEngine
{
 public class CreateSwfMediaAction : MediaAction, ICatalogAction
 {
  public const string ActionId = "CreateSwfMediaAction";

  private readonly FileVersion _fileVersion;
  private readonly string _targetPath;

  public override string Id
  {
   get
   {
    return ActionId;
   }
  }

  public FileVersion FileVersion
  {
   get
   {
    return _fileVersion;
   }
  }

  public string TargetPath
  {
   get
   {
    return _targetPath;
   }
  }

  public CreateSwfMediaAction(CatalogActionData data) : base(data.IsCritical)
  {
   _fileVersion = data.FileVersion;

   // Construct a random target path to store the preview.
   _targetPath = Path.Combine(
    _fileVersion.App.GetEmptyFolder(),
    Path.ChangeExtension(_fileVersion.FileName, "swf"));
  }

  public void UpdateFileVersion(FileVersion version, XmlWriter writer)
  {
   if (IsSuccess &amp;amp;&amp;amp; FileSystem.Exists(TargetPath))
   {
    // Save the generated preview as an additional file in the file version.
    version.AdditionalFiles.Add(TargetPath, false);
   }
  }
 }
}
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
The real work of creating the previews happens in the media engine which executes the media actions. 
The &lt;code&gt;InDesignPreviewEngine&lt;/code&gt; executes either a &lt;code&gt;CreatePdfMediaAction&lt;/code&gt;
or a &lt;code&gt;CreateSwfMediaAction&lt;/code&gt;:
&lt;/p&gt;&lt;p&gt;&lt;pre name="C#"&gt;
using Adam.Core;
using Adam.Core.MediaEngines;

namespace InDesignPreviewMediaEngine
{
 public partial class InDesignPreviewMediaEngine : MediaEngine
 {
  public InDesignPreviewMediaEngine(Application app) : base(app)
  {
  }
 
  public override string Id
  {
   get
   {
    return "InDesignPreviewMediaEngine";
   }
  }
 
  public override bool Run(MediaAction mediaAction)
  {
   switch (mediaAction.Id)
   {
    case CreatePdfMediaAction.ActionId:
    {
     CreatePdfMediaAction action = (CreatePdfMediaAction)mediaAction;
     CreatePdfPreview(action.FileVersion, action.TargetPath);
     return true;
    }
    case CreateSwfMediaAction.ActionId:
    {
     CreateSwfMediaAction action = (CreateSwfMediaAction)mediaAction;
     CreateSwfPreview(action.FileVersion, action.TargetPath);
     return true;
    }
    default:
    {
     return false;
    }
   }
  }

  protected override void Dispose(bool disposing)
  {
  }
 }
}
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
Creating a PDF from an InDesign document is very straightforward using the DocMaker API:
&lt;/p&gt;&lt;p&gt;&lt;pre name="C#"&gt;
using Adam.Core.Records;
using Adam.DocMaker.Core;

namespace InDesignPreviewMediaEngine
{
 public partial class InDesignPreviewMediaEngine
 {
  private static void CreatePdfPreview(FileVersion fileVersion, string targetPath)
  {
   using (Document document = Document.CreateFromFileVersion(fileVersion))
   {
    document.SaveToPdf(targetPath);
   }
  }
 }
}
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
In order to export an SWF movie from an InDesign document, a bit more work is needed. The DocMaker API does not directly
support this functionality, but it does support running custom scripts in InDesign Server, so this is how we can
accomplish our goal. Note that we export the SWF movie to an output path located on the InDesign Server and
move it to the actual target path on the ADAM Application Server afterwards:
&lt;/p&gt;&lt;p&gt;&lt;pre name="C#"&gt;
using System;
using System.Globalization;
using System.IO;
using Adam.Core.Records;
using Adam.DocMaker.Core;
using Adam.Tools.IO;

namespace InDesignPreviewMediaEngine
{
 public partial class InDesignPreviewMediaEngine
 {
  private static void CreateSwfPreview(FileVersion fileVersion, string targetPath)
  {
   using (Document document = Document.CreateFromFileVersion(fileVersion))
   {
    // Construct a temporary output path located on the InDesign Server.
    string outputDirectory = GetRandomPath(document.GetWorkingFolder());
    FileSystem.CreateDirectory(outputDirectory);
    string outputPath = GetRandomPath(outputDirectory);

    // Export to SWF by running a custom script in InDesign Server.
    document.PublishToServer(
     string.Format(
      CultureInfo.InvariantCulture,
      "{0}.exportFile(ExportFormat.SWF, new File('{1}'));",
      Document.ScriptIdentifier,
      GetInDesignPath(outputPath)));

    // Move the result to the target path located on the ADAM Application Server.
    FileSystem.MoveFile(outputPath, targetPath);
    FileSystem.DeleteDirectory(outputDirectory, DirectoryDeleteCriteria.Always, 0);
   }
  }

  private static string GetRandomPath(string basePath)
  {
   return Path.Combine(basePath, Guid.NewGuid().ToString());
  }

  private static string GetInDesignPath(string basePath)
  {
   return new Uri(basePath).ToString().Substring("file:".Length);
  }
 }
}
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
As a final step, we would also like to be able to view the generated SWF movie in AssetStudio. This can be 
achieved by implementing a custom preview player. How to do this for SWF movies has already been explained
in a different blog post which is referenced below. The only difference here is that our main file version contains
an InDesign document and the actual SWF preview needs to be retrieved from the additional files (i.e. we are creating
an SWF preview player for InDesign files, not a preview player for SWF files). This is what the code for our preview 
player looks like:
&lt;/p&gt;&lt;p&gt;&lt;pre name="C#"&gt;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using Adam.Core.Records;
using Adam.Web.Core.HttpHandlers;
using Adam.Web.Core.UI.Providers;

namespace InDesignPreviewMediaEngine
{
 public class SwfPreviewPlayer : FileVersionView
 {
  protected override void CreateChildControls()
  {
   FileVersion version = DataItem as FileVersion;
   if (version != null)
   {
    AdditionalFile moviePreview = version.AdditionalFiles.GetByExtension("swf").FirstOrDefault();

    if ((moviePreview != null) &amp;amp;&amp;amp; !string.IsNullOrEmpty(moviePreview.Path))
    {
     string url = new ServerFileUri(moviePreview.Path, "application/x-shockwave-flash").ToString();

     HtmlGenericControl control = new HtmlGenericControl("object");

     HtmlGenericControl movieControl = new HtmlGenericControl("param");
     movieControl.Attributes.Add("name", "movie");
     movieControl.Attributes.Add("value", url);
     control.Controls.Add(movieControl);

     HtmlGenericControl embeddedControl = new HtmlGenericControl("embed");
     embeddedControl.Attributes.Add("src", url);
     embeddedControl.Attributes.Add("type", "application/x-shockwave-flash");
     control.Controls.Add(embeddedControl);

     Controls.Add(control);
    }
    else
    {
     Controls.Add(new LiteralControl("No movie preview found."));
    }
   }
   else
   {
    Controls.Add(new LiteralControl("No file version available."));
   }
  }
 }
}
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
To wrap things up, we need to compile our classes to a class library, register the assembly in ADAM and add the
providers to different ADAM settings. Media actions are added to the "Catalog actions providers" setting:
&lt;/p&gt;&lt;p&gt;&lt;pre name="XML"&gt;
&amp;lt;add name="CreatePdfPreview" type="InDesignPreviewMediaEngine.CreatePdfMediaAction, InDesignPreviewMediaEngine" webControl="" /&amp;gt;
&amp;lt;add name="CreateSwfPreview" type="InDesignPreviewMediaEngine.CreateSwfMediaAction, InDesignPreviewMediaEngine" webControl="" /&amp;gt;
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
A custom media engine must be added to the "Media engines providers" setting:
&lt;/p&gt;&lt;p&gt;&lt;pre name="XML"&gt;
&amp;lt;add name="InDesignPreview" type="InDesignPreviewMediaEngine.InDesignPreviewMediaEngine, InDesignPreviewMediaEngine" webControl="" /&amp;gt;
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
A new preview player can be added to the "Preview render web control providers" setting:
&lt;/p&gt;&lt;p&gt;&lt;pre name="XML"&gt;
&amp;lt;add name="SwfPreviewPlayer" type="InDesignPreviewMediaEngine.SwfPreviewPlayer, InDesignPreviewMediaEngine" width="600px" height="400px" /&amp;gt;
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
You should now be able to add the catalog actions, media engine and preview player to the InDesign file type in ADAM:
&lt;/p&gt;&lt;p&gt;&lt;img src='http://blogs.adamsoftware.net/Files/2abda5562d564bacbf9f027e1526fedd.jpg' /&gt;&lt;/p&gt;&lt;p&gt;
Ingesting an InDesign document into ADAM will now result in both a PDF and an SWF movie being generated and saved as
additional files. Here is what the resulting SWF preview for such an InDesign document looks like in AssetStudio:
&lt;/p&gt;&lt;p&gt;&lt;img src='http://blogs.adamsoftware.net/Files/6fe0809bf6034166aadb8947d1cc5b5c.jpg' width="600px" /&gt;&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Sequential GUIDs in ADAM 4.7</title><link>http://blogs.adamsoftware.net/Engine/SequentialGUIDsinADAM47.aspx</link><description>&lt;div&gt;&lt;p&gt;
In ADAM 4.7 we introduced a seemingly small but incredibly important feature: sequential globally unique identifiers (sequential GUIDs). 
&lt;br /&gt;
Prior to ADAM 4.7, almost any primary key in the ADAM database was a uniqueidentifier column. At first sight, this choice makes nothing but sense (well, it did to me): 
You're absolutely one hundred percent sure that when you generate a new key, it will be unique not only in that table, not only in your entire database, but basically across the world. 
(I know, I know, you're not "absolutely" sure, but to give you an idea: For a 1% chance of collision, you'd need to generate about 2,600,000,000,000,000,000 GUIDs, 
so I think it's safe to say it's pretty darn unique).
&lt;/p&gt;&lt;p&gt;
However, from a SQL perspective, there is a major disadvantage to this design choice: index fragmentation! 
&lt;br /&gt;
Because the primary keys are so random, each time SQL server needs to insert a new record, it needs to calculate where exactly it needs to be located in the table. 
With an identity-based primary key, this is easy: its added to the back of the table, since the generated primary key is always greater than the largest key present in the table. 
For uniqueidentifier-based columns this is far from true. Rather quite the opposite: if you have a table with for instance 10k records, you'll be lucky if the primary key column 
has a fragmentation below 95%.
&lt;br /&gt;
Now, index fragmentation will not affect query performance a lot on small environments, but on enterprise level systems it can have dramatic impact. That's why we decided to 
look for an alternative primary key strategy: &lt;b&gt;Sequential GUIDs&lt;/b&gt;.
&lt;/p&gt;&lt;h3&gt;Sequential GUIDs&lt;/h3&gt;&lt;p&gt;
A sequential GUID is a GUID that is greater than any GUID previously generated. It still guarantees "absolute" uniqueness, 
but it also guarantees that is "greater" than previously generated sequential GUIDs.
&lt;/p&gt;&lt;p&gt;
There are a couple of algorithms that can generate sequential GUIDs. We investigated two: SQL Server's NewSequentialId() function, and COMB GUIDs (i.e. combined GUIDs). 
We'll explain both algorithms and their up- and downsides.
&lt;/p&gt;&lt;h4&gt;NewSequentialId&lt;/h4&gt;&lt;p&gt;
This function, introduced in SQL Server 2005, creates a GUID that is greater than any GUID previously generated by this function &lt;i&gt;on a specified computer&lt;/i&gt;. 
The last part of this sentence is important. It implies that it will only guarantee sequential GUIDs when generated on the same instance. Even that isn't quite true, since 
restarting that instance &lt;i&gt;can&lt;/i&gt; cause newly generated GUIDs to start from a lower range than before.
&lt;br /&gt;
Since this algorithm is based on the computer's MAC address, it could also potentially cause security or privacy issues.
&lt;br /&gt;
Another important limitation is the fact that the NewSequentialId() function can only be used with DEFAULT constraints on table columns of type uniqueidentifier. 
This means we can no longer generate an Id client side, thus being unable to know it before the object is saved to the database.
&lt;/p&gt;&lt;p&gt;
Given these limitations, we decided to look at another algorithm: COMB GUIDs.
&lt;/p&gt;&lt;h4&gt;COMB GUIDs&lt;/h4&gt;&lt;p&gt;
COMB GUIDs are, like their name implies, based on a combination of two datatypes: a GUID (for uniqueness) and a datetime (for sorting). The algorithm was first discussed by 
&lt;a target='_blank' href="http://www.informit.com/articles/article.aspx?p=25862"&gt;Jimmy Nilsson&lt;/a&gt; about 10 years ago, and has proven its value over the years.
&lt;br /&gt;
The main advantages over NewSequentialId are that is not bound to a computer nor its MAC address, and since it is a well-known algorithm, it can be implemented both on 
the database server side (as a TSQL function) or client side (.NET, using Adam.Tools.IdGenerator.NewId()). The latter allows us to be backward compatible.
&lt;/p&gt;&lt;p&gt;
Since it has none of the disadvantages of NewSequentialId, this algorithm was chosen to be the basis for any new Id generated in ADAM.
&lt;/p&gt;&lt;h4&gt;Happy Generating!&lt;/h4&gt;&lt;/div&gt;</description></item><item><title>The Evolving Role of DAM in CXM – Part 2</title><link>http://blogs.adamsoftware.net/Sales_&amp;_Marketing/TheEvolvingRoleofDAMinCXMPart2.aspx</link><description>&lt;div&gt;&lt;p&gt;
As some readers already know, I recently participated in a Tweet Jam hosted by &lt;a target='_blank' href="http://www.cmswire.com"&gt; CMSWire &lt;/a&gt; that discussed the evolving role of digital asset management (DAM) in customer experience management (CXM). You can read CMSWire’s summary of the Tweet Jam &lt;a target='_blank' href="http://goo.gl/3MTW3"&gt; here &lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
In my &lt;a target='_blank' href="http://blogs.adamsoftware.net/Sales_&amp;_Marketing/TheEvolvingRoleofDAMinCXMPart1.aspx"&gt; last post &lt;/a&gt;, 
I reviewed the first three discussion questions that were addressed in the Tweet Jam. In this post, I’ll provide my take on the issues covered by the final three discussion questions.
&lt;/p&gt;&lt;p&gt;&lt;b&gt; Question 4: “How do DAM and CXM and WEM currently relate?” &lt;/b&gt;&lt;/p&gt;&lt;p&gt;
Most participants in the Tweet Jam believed that there should be a strong relationship between DAM and the broader set of CXM technologies (web content management, marketing campaign management, etc.). Unfortunately, however, there are still many instances where digital asset management is viewed as a silo application that is used primarily by creatives.
&lt;/p&gt;&lt;p&gt;
In my view, the basic parameters of the relationship between DAM and other CXM technologies are clear. Marketing content is the fuel that powers customer experience management. In this context, “customer experience management” encompasses interactions with both current and potential customers. Today, most marketing content exists in digital form, at least at some point in its lifecycle. Therefore, digital content assets lie at the heart of customer experience management. For this reason, DAM should be the hub of a company’s content management system. A robust DAM solution can provide marketing content assets for both digital and traditional marketing communications channels.
&lt;/p&gt;&lt;p&gt;&lt;b&gt; Question 5: “What is the single biggest DAM opportunity in 2012?”&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
The participants in the Tweet Jam were united in the view that the greatest DAM opportunity lies in integrating DAM solutions with other CXM technologies such as web content management and marketing asset and marketing campaign management. Most industry analysts believe that the future growth of the digital asset management market will be primarily driven by the implementation of DAM solutions to support more effective and efficient marketing operations. To capture this growth opportunity, DAM vendors must provide solutions that easily integrate with other marketing technology tools, so that DAM can become a core component of the overall enterprise marketing technology infrastructure.
&lt;/p&gt;&lt;p&gt;&lt;b&gt;“Who should own the DAM Process?”&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
Most participants in the Tweet Jam said that end users should own the DAM process. I suspect that most of these answers were motivated by the belief that a DAM system will not be successful unless it receives strong support and buy-in from the individuals who should be using the system. I agree with this sentiment, but I’ll also offer a more function-oriented answer. I contend that, in most enterprises, marketing should “own” the DAM system.
&lt;/p&gt;&lt;p&gt;
Today more than ever before, effective engagement with customers and prospects requires enterprises to deliver brand consistent, coordinated, cross-channel communications. Marketing is the business function that has the primary responsibility for managing this communications process. Since most, if not all, of the communications will utilize digital marketing assets, it seems only logical to me that marketing should manage the DAM process.
&lt;/p&gt;&lt;/div&gt;</description></item><item><title>The Evolving Role of DAM in CXM – Part 1</title><link>http://blogs.adamsoftware.net/Sales_&amp;_Marketing/TheEvolvingRoleofDAMinCXMPart1.aspx</link><description>&lt;div&gt;&lt;p&gt;
A couple of weeks ago, I participated in a Tweet Jam hosted by &lt;a target='_blank' href="http://www.cmswire.com/"&gt; CMSWire &lt;/a&gt; that discussed the evolving role of digital asset management (DAM) in customer experience management (CXM). The participants included DAM/CXM industry thought leaders, marketing professionals, and representatives of several leading marketing technology providers. You can read CMSWire’s summary of the Tweet Jam &lt;a target='_blank' href="http://www.cmswire.com/cms/digital-asset-management/tweet-jam-recap-is-dam-the-future-of-customer-experience-cxmchat-015231.php"&gt; here &lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
The Tweet Jam focused on six important questions, and the discussion produced many valuable insights. Given the limitations of Twitter, however, it was almost impossible to give these questions the treatment they deserve. So in this post, I’ll provide my take on the issues addressed in the first three discussion questions, and I’ll cover the final three questions in my next post.
&lt;/p&gt;&lt;p&gt;&lt;b&gt;“Question 1: Given how digital we are, what is your current definition of DAM?”&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
As you might expect, the Tweet Jam produced a wide range of definitions for digital asset management. The discipline of digital asset management has evolved significantly over the past two decades, and it continues to evolve in response to changes in the practice of marketing. For me, any “definition” of digital asset management must include three core concepts:
&lt;/p&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;DAM primarily deals with rich media assets such as images, graphics, videos, and audio.&lt;/li&gt;&lt;li&gt;DAM primarily deals with what Forrester calls “persuasive content.” Persuasive content is content that is designed to influence the behavior of external audiences, such as prospects and customers.&lt;/li&gt;&lt;li&gt;DAM includes the cataloging, storage, and retrieval of digital assets, but it also embraces the design, management, and automation of the business processes that relate to the creation and distribution of digital assets.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt; “Question 2:What are the core elements of a DAM strategy?”&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
Most participants in the Tweet Jam focused on metadata and search as two of the core elements of a DAM strategy. I certainly agree that these are critical elements of a DAM solution, but I wonder if they should be the primary focus of a “DAM strategy.” Perhaps the more important issue is whether an enterprise should have a “DAM strategy” that is separate from its overall marketing technology strategy. In my view, digital asset management is one of several technology tools that collectively enable effective and efficient marketing operations. Therefore, any DAM solution must fit within a larger strategic context.&lt;/p&gt;&lt;p&gt;&lt;b&gt;“Question 3: What 3 things make a DAM solution successful?”&lt;/b&gt;&lt;/p&gt;&lt;p&gt;
Most of the Tweet Jam participants focused on various aspects of ease of use and flexibility when it came to identifying the factors that make a DAM solution successful. It is difficult to argue with these two factors. Obviously, if a DAM solution does not provide a user interface that is intuitive and easy to use, many users (or potential users) will probably underutilize the solution, and some will actively try to create “work-arounds” to avoid using the solution. For large enterprises, I believe a critical success factor is having a DAM solution that is truly enterprise-class. An enterprise-class DAM solution will exhibit several attributes that fall under the general idea of flexibility. Some of these attributes include scalability, configurability, interoperability, and extensibility.&lt;/p&gt;&lt;p&gt;
In my next post, I’ll cover the final three discussion questions that were featured in the Tweet Jam.&lt;/p&gt;&lt;/div&gt;</description></item><item><title>What is the Right Delivery Model for Your Marketing Software?</title><link>http://blogs.adamsoftware.net/Sales_&amp;_Marketing/WhatistheRightDeliveryModelforYourMarketingSoftware.aspx</link><description>&lt;div&gt;&lt;p&gt;
Marketing software applications have become mission critical technologies for most global enterprises. The proliferation of marketing channels and the growing need for greater customization of marketing messages and materials have made it all but impossible for large organizations to manage marketing effectively without technology.&lt;/p&gt;&lt;p&gt;
Choosing the right marketing software is, therefore, a major strategic decision, and one important aspect of the decision is whether to opt for software that is installed on in-house servers (on-premises software) or software that is hosted externally and accessed via the Internet (a cloud-based solution). Both delivery models have advantages and disadvantages, and the choice ultimately depends on which model is the best fit for your business. Here are four issues to consider when making the decision.&lt;/p&gt;&lt;p&gt;&lt;b&gt; Ease of Implementation &lt;/b&gt;&lt;/p&gt;&lt;p&gt;
Proponents of cloud-based software often point to ease of implementation as one of its primary benefits. However, virtually all marketing software applications require significant configuration, and this applies to both on-premises and cloud-based solutions. For example, digital asset management software requires you to set up user accounts and permissions, input your taxonomy/metadata system, and configure the software to incorporate your workflows. When everything is considered, a cloud-based solution may not be significantly “easier” to implement than an on-premises solution.&lt;/p&gt;&lt;p&gt;&lt;b&gt; Support &lt;/b&gt;
Another often-cited benefit of cloud-based software is that the vendor assumes full responsibility for providing software support. Of course, vendors of on-premises software also provide support, but with on-premises software, your IT department will typically get involved when problems arise. The downside of a cloud-based solution is that you have less direct control over problem resolution.&lt;/p&gt;&lt;p&gt;&lt;b&gt; System Uptime/Performance &lt;/b&gt;&lt;/p&gt;&lt;p&gt;
With on-premises software, system uptime and performance depend on the reliability and robustness of your technological infrastructure and on the capabilities of your IT personnel. With a cloud-based solution, the reliability and performance of the system are dependent on the vendor’s infrastructure and capabilities (and to some extent on the reliability and performance of your Internet connection). Therefore, when considering cloud-based software, you should always ask your prospective vendors what service level assurances they are prepared to offer.&lt;/p&gt;&lt;p&gt;&lt;b&gt; Integration &lt;/b&gt;&lt;/p&gt;&lt;p&gt;Many marketing technologies in use today are unconnected point solutions. It’s now apparent that the next major advance in marketing productivity will require an integrated suite of technologies that enable marketers to manage a broader scope of marketing functions. Therefore, when evaluating marketing software, you need to determine whether that software can be integrated with other programs you are or will be using. Combining on-premises and cloud-based software solutions may make integration more difficult to achieve.&lt;/p&gt;&lt;p&gt;
So what is the bottom line for choosing between on-premises and cloud-based software? In my view, the most significant factor is the strength and depth of your internal IT resources. If you don’t have extensive internal resources, cloud-based software may be your best choice. On the other hand, if you do have a strong IT department, you may not reap significant benefits by choosing cloud-based, rather than on-premises, marketing software.&lt;/p&gt;&lt;/div&gt;</description></item><item><title>PageBuilder 4.1 released</title><link>http://blogs.adamsoftware.net/Announcements/PageBuilder41released.aspx</link><description>&lt;div&gt;&lt;p&gt;
                                Last week we released a new version of our automatic catalog publishing software:
                                PageBuilder 4.1.
                            &lt;/p&gt;&lt;p&gt;
                                Many new and improved features make this a highly anticipated release:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Exciting new options added to the Update Catalog wizard: it's now possible to translate
                                    contents, update field and classification labels and even update images.&lt;/li&gt;&lt;li&gt;Build UI for Catalogs and ItemGroups are reworked to give a better user experience.
                                    Also new features like presets, choose output filename and classification, etc have
                                    been added.&lt;/li&gt;&lt;li&gt;Templates UI have been improved. It's now possible to apply master templates to
                                    all siblings at once.&lt;/li&gt;&lt;li&gt;Maintenance history page added. PageBuilder maintenance jobs can easily be viewed,
                                    retried and changed before restarting.&lt;/li&gt;&lt;li&gt;Several small changes and bugfixes to enhance custom development and user experience.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
                                As always we are looking forward for your feedback and also keep an eye on our blogs
                                cause we keep on adding interesting custom development cases regularly.
                            &lt;/p&gt;&lt;/div&gt;</description></item><item><title>Decoding Marketing Technology Terms and Acronyms</title><link>http://blogs.adamsoftware.net/Sales_&amp;_Marketing/DecodingMarketingTechnologyTermsandAcronyms.aspx</link><description>&lt;div&gt;&lt;p&gt;
Today’s marketing technology landscape is filled with confusing terms and three-letter acronyms. Over the past two decades, the number of marketing technologies has grown dramatically, and companies have attempted to create competitive differentiation by using distinctive terms to describe their solutions. The result is an array of marketing technology terms and acronyms that provide little help to marketers who are looking for solutions to important business challenges. Below are my “definitions” of five important marketing technologies and their acronyms.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Digital Asset Management (DAM) &lt;/b&gt;—A software system that enables companies to efficiently catalog, store, retrieve, and repurpose content assets that exist in the form of computer files. The core feature of a DAM system is a centralized repository, or library, containing an organization’s content assets that have been cataloged in a way to facilitate search and retrieval. DAM systems will also typically enable the automation of workflows relating to the creation, approval, and versioning of content assets.
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Enterprise Content Management (ECM)&lt;/b&gt;—The Association for Information and Image Management (AIIM) defines enterprise content management as, “the strategies, methods and tools used to capture, manage, store, preserve, and deliver content and documents related to organizational processes.” On the surface, therefore, ECM sounds a lot like DAM, but there are significant differences.
&lt;/p&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;ECM systems are enterprise-wide solutions that manage all types of information assets, including operational communications and even e-mail. DAM systems &lt;i&gt;tend&lt;/i&gt; to be used primarily for marketing-related content assets.&lt;/li&gt;&lt;li&gt;ECM systems are designed to work with content that is primarily text-based. DAM solutions are designed to work with images and other forms of “rich” media, as well as text.&lt;/li&gt;&lt;li&gt;Both ECM and DAM systems provide search functionality, but ECM systems typically lack the robust versioning and rendering capabilities that are needed to prepare content assets for use in a variety of production/delivery environments (commercial printing, personal printing, website, mobile, etc.).&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Web Content Management (WCM)&lt;/b&gt;—A software system that provides website authoring and web content collaboration and administrative tools. WCM systems are designed to enable users with little knowledge of web programming languages to create and maintain professional-quality website content.
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Marketing Resource Management (MRM) &lt;/b&gt;—A software system that is designed to help companies manage marketing operations more effectively. MRM systems provide tools for managing marketing assets, people, work processes, schedules, budgets, and forecasts. MRM systems also typically provide tools for measuring the performance of the marketing function. In some ways, an MRM system can be thought of as an enterprise resource planning (ERP) system for marketing.
&lt;/p&gt;&lt;p&gt;&lt;b&gt;Marketing Asset Management (MAM)&lt;/b&gt;—A relatively new term that’s used to describe software systems that provide DAM capabilities and additional functionality designed specifically for marketers. Some people describe MAM as “DAM for marketers,” but there are several important differences between robust MAM solutions and traditional DAM systems.
&lt;/p&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;Traditional DAM systems are used primarily by “creative” workers. MAM systems also address the needs of other marketing supply chain participants, including salespeople and channel partners.&lt;/li&gt;&lt;li&gt;Traditional DAM systems are primarily concerned with managing components of marketing materials. MAM solutions also focus on the creation and customization of finished marketing materials.&lt;/li&gt;&lt;li&gt;Some MAM systems provide direct links to production vendors, and therefore they can be used to execute the procurement of marketing materials.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt; There’s another term and acronym that should be on your radar. At ADAM, we use the term &lt;i&gt; marketing execution platform (MEP) &lt;/i&gt; to describe a set of integrated technology tools that enable marketers to manage the full scope of the marketing function. In a future post, I’ll describe in more detail what a marketing execution platform includes and why we believe it represents the emerging paradigm of marketing technology.&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Updating item groups with PageBuilder 4</title><link>http://blogs.adamsoftware.net/PageBuilder/UpdatingitemgroupswithPageBuilder4.aspx</link><description>&lt;div&gt;&lt;p&gt;
PageBuilder 4 allows you to update previously built catalogs, i.e. refresh the data while preserving the 
original lay-out. Because the lay-out does not need to be recalculated, updating a catalog is much faster than 
rebuilding that same catalog from scratch.
&lt;/p&gt;&lt;p&gt;
Item groups or data sheets for individual products are typically always rebuilt from scratch, 
because they contain much less data than full catalogs and the lay-out can be calculated quickly.
&lt;/p&gt;&lt;p&gt;
There may however be cases where you want to refresh existing item groups while preserving the lay-out,
e.g. when you have applied manual post-processing to your product data sheets in InDesign.
&lt;/p&gt;&lt;p&gt;
Item groups can easily be updated with a custom &lt;code&gt;ItemGroupBuilder&lt;/code&gt;. 
The only difference with a default &lt;code&gt;ItemGroupBuilder&lt;/code&gt; is that we start from a built item group rather than 
from a fresh design template, and we execute a &lt;code&gt;FieldResolveAction&lt;/code&gt; (which updates field values) rather 
than a &lt;code&gt;RecordResolveAction&lt;/code&gt; (which resolves design templates).
&lt;/p&gt;&lt;p&gt;
To make things a little more interesting, we will allow users to pick the fields to update by specifying a field
group name through the Tag property in the PageBuilder Studio UI (e.g. &lt;code&gt;&amp;lt;fieldGroup&amp;gt;MyFieldGroup&amp;lt;/fieldGroup&amp;gt;&lt;/code&gt;).
&lt;/p&gt;&lt;p&gt;
Here is the full code for our &lt;code&gt;UpdateItemGroupBuilder&lt;/code&gt;:
&lt;/p&gt;&lt;p&gt;&lt;pre name="C#"&gt;
using System;
using System.Collections.Generic;
using System.Xml.Linq;
using Adam.Core;
using Adam.Core.Management;
using Adam.Core.Records;
using Adam.DocMaker.Core;
using Adam.PageBuilder.Core;
using Adam.PageBuilder.Core.Build;
using Adam.PageBuilder.Core.Extensions;
using Adam.PageBuilder.Core.Resolve;
using Adam.Tools.LogHandler;

namespace UpdateItemGroup
{
 public class UpdateItemGroupBuilder : ItemGroupBuilder
 {
  public UpdateItemGroupBuilder(Application application) : base(application)
  {
  }

  protected override Document LoadDocument()
  {
   // Load the previously built item group linked to the current record.
   Guid? itemGroupRecordId = Record.GetBuiltItemGroupRecordId(Languages);

   if (itemGroupRecordId.HasValue)
   {
    // Start with the latest version of the built item group.
    Record itemGroupRecord = new Record(App);
    itemGroupRecord.Load(itemGroupRecordId.Value);
    FileVersion fileVersion = itemGroupRecord.Files.LatestMaster;
    return Document.CreateFromFileVersion(fileVersion);
   }

   App.Log(LogSeverity.Warning, "Could not find item group to update");

   return null;
  }

  protected override IEnumerable&amp;lt;DocumentAction&amp;gt; Actions
  {
   get
   {
    // Fields to update are specified through the Tag property.
    string fieldGroupName = XElement.Parse(Tag).Value;

    FieldResolveAction action = new FieldResolveAction(App);

    FieldGroupHelper helper = new FieldGroupHelper(App);
    action.FieldsToUpdate = helper.GetFieldIds(fieldGroupName);

    // Execute a single FieldResolveAction to update the field values.
    yield return action;
   }
  }
 }
}
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
To summarize: you can quickly rebuild item groups from scratch, so updating item groups may not be a common use 
case, but if you do happen to need this behavior, it is very straightforward to implement.
&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Brand Asset Management in a Multichannel World</title><link>http://blogs.adamsoftware.net/Sales_&amp;_Marketing/BrandAssetManagementinaMultichannelWorld.aspx</link><description>&lt;div&gt;&lt;p&gt;Chief marketing officers and other marketing managers rightfully see themselves as “guardians” of their company’s brands. They obsess about maintaining the integrity of their brands and ensuring that brand messaging and presentation are globally consistent and always supportive of the brand promise.&lt;/p&gt;&lt;p&gt;
Managing brand communication assets effectively and efficiently has become an increasingly difficult challenge, particularly for marketers in large global enterprises. The job has become more difficult because the number of communication assets that marketers must manage has exploded. &lt;/p&gt;&lt;p&gt;
Several factors have contributed to this explosive growth.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;The proliferation of brand SKU’s &lt;/b&gt;—Many companies are adding new products (or product variations) on a regular basis. Consider, for example, something as “simple” as toothpaste. We now have toothpaste that whitens teeth, toothpaste that eliminates bad breath, and toothpaste that kills the bacteria that causes gingivitis. Not all varieties of products require unique marketing assets, but many do.&lt;/li&gt;&lt;li&gt;&lt;b&gt;The need to localize brand messaging and materials&lt;/b&gt;—Marketers now recognize that creating marketing messages and materials for local audiences will increase relevance and improve effectiveness. Global enterprises face even greater challenges when it comes to localizing content. They must, for example, provide marketing messages and materials in multiple languages, and they often need to make other changes to address cultural sensibilities. The result is multiple versions of messages and materials and more marketing assets to manage.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
Perhaps the single greatest driver of the growth of brand communication assets is the proliferation of marketing channels. Today, both consumers and business buyers use a variety of communication channels to obtain information about products and services. In addition to traditional channels such as television, radio, newspapers, and magazines, potential customers expect to be able to obtain product information via desktop computers, laptops, tablets, and smartphones. The need to maintain consistent brand messaging and presentation across diverse communication channels with differing format and content requirements multiplies the number of brand assets that must be created and managed.&lt;/p&gt;&lt;p&gt;
In this increasingly complex environment, effective and efficient brand asset management is impossible without the right technology tools. Some software firms now offer what they call &lt;b&gt;brand asset management software &lt;/b&gt;to meet this need. In our view, however, brand asset management is a business function, not a distinct technology.&lt;/p&gt;&lt;p&gt;
To implement an effective brand asset management system, you need two core technologies.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Digital asset management software &lt;/b&gt;that enables you to catalog, store, find, retrieve, re-use, and repurpose brand communication assets and provide controlled access to these assets&lt;/li&gt;&lt;li&gt;&lt;b&gt;Business process/workflow management software &lt;/b&gt;that enables you to design, deploy, and automate the processes used to approve brand communication assets themselves and the finished marketing messages and materials that incorporate those assets.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
Brand asset management is a vital marketing function in today’s multichannel marketing environment. With the right technology tools, you can perform this essential function effectively and efficiently.
&lt;/p&gt;&lt;/div&gt;</description></item><item><title>The Growing Importance of Effective Marketing Operations</title><link>http://blogs.adamsoftware.net/Sales_&amp;_Marketing/TheGrowingImportanceofEffectiveMarketingOperations.aspx</link><description>&lt;div&gt;&lt;p&gt;Prompted by growing demands from CEO’s, enterprise-level marketers have been working to improve productivity for several years.  The “great recession” of 2009-2010 across much of the developed world brought a heightened sense of urgency to the efforts to make marketing more productive. Whatever the economic environment, however, marketers are now expected to maximize the return produced by every investment.&lt;/p&gt;&lt;p&gt;
Most large enterprises have used two distinct, but complementary, strategies to improve marketing productivity.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Early efforts focused primarily on improving the effectiveness of campaigns and programs.  Marketers began using sophisticated data analytics techniques and personalization technologies to more precisely target marketing campaigns and to make messages more relevant and persuasive.&lt;/li&gt;&lt;li&gt;More recently, marketers have focused their attention on improving the productivity of their operations. They have recognized that improving the efficiency of marketing operations is a powerful way to stretch limited budgets. The equation is simple:  The money saved by increasing operational efficiency can be used to fund revenue-generating campaigns and programs.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
The importance of marketing operations is now reflected in the organizational structure of the marketing department. Over the past decade, a growing number of enterprises have added a dedicated position to manage marketing operations. While the specific responsibilities of this position obviously vary from company to company, most marketing operations managers will be deeply involved in:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Planning and budgeting&lt;/li&gt;&lt;li&gt;Marketing process/workflow design/improvement&lt;/li&gt;&lt;li&gt;Marketing performance measurement&lt;/li&gt;&lt;li&gt;Marketing technology selection/implementation&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
The objective of marketing operations management is to improve the effectiveness and efficiency of marketing operations by implementing and using concepts and tools from other disciplines. These tools often include Six Sigma, change management, systems thinking, and similar management practices.&lt;/p&gt;&lt;p&gt;

Marketing operations management is also very much about the selection and implementation of marketing-related technologies. New technologies now provide marketers unparalleled opportunities to improve productivity, but the proliferation of marketing technologies also makes it critical to select tools that can be integrated to provide a comprehensive marketing execution technology platform.&lt;/p&gt;&lt;p&gt;
Have you analyzed your company’s marketing operations activities and processes? Have you recently examined the marketing technologies your company uses? Do these technologies provide integrated support for all your marketing activities and processes? If your answer to any of these questions is “No,” it may be time to take a close look at your marketing operations.&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Custom Geo-Location Panel for PIMS 3</title><link>http://blogs.adamsoftware.net/PIMS/CustomGeoLocationPanelforPIMS3.aspx</link><description>&lt;div&gt;&lt;h3&gt;Play day&lt;/h3&gt;&lt;p&gt;
We as developers at ADAM Software, have a play day every 3 months. The idea is to create a demo using any technology available and play with that technology for a day. The next day you can show off your fancy stuff.
&lt;/p&gt;&lt;p&gt;
Ever since I’ve written the code samples for the PIMS 3.1 development guide, I was dying to try out a geo-location PIM Studio panel control in the next play day. Given that code samples are usually simplified samples that mainly try to demonstrate the principal rather that the use case itself, I wanted to make a full-blown sample that completely implements the use case.
&lt;/p&gt;&lt;p&gt;
So, this is what this blog article is all about: a real PIM Studio geo-location panel. It allows the user to place a push pin anywhere on a map. This location (based on latitude and longitude) is then saved into ADAM fields of the product. To make the map control more easy to use, I’ve added some jQuery UI to make the map resizable. I’ve also used some standard ASP.NET AJAX implementations (an extender control  class server-side and a behavior class client-side) and used the ADAM Web 5 framework for including the embedded script file. Just like I should.
&lt;/p&gt;&lt;h3&gt;Building the panel&lt;/h3&gt;&lt;p&gt;
For displaying the map in the browser, I’ve looked around on the web and I finally ended up with the &lt;b&gt;Microsoft Bing Map Control 6.3&lt;/b&gt;. It a free JavaScript based control which doesn’t require a subscription to use push pins on the map. Another neat thing about this control is that you only have to render a div-tag to the browser, all the other stuff is rendered by the client-side framework of the map control itself.
&lt;/p&gt;&lt;p&gt;
The first thing I’ve created was an &lt;b&gt;extender control&lt;/b&gt; that extends a standard ASP.NET panel control (which renders as a div tag to the browser). The extender control will call a client-side behavior class that will manipulate the target of the extender control. I’ve also added properties to the extender control to target two text boxes (latitude and longitude). These text boxes will display the current co-ordinates of the push pin and allow these co-ordinates to be posted back to the server. It is my personal choice to use visible text boxes, these could have been hidden controls as well. The two latitude and longitude properties of the extender control allow to set the initial value of the push pin’s co-ordinates.
&lt;/p&gt;&lt;p&gt;
Next, I’ve implemented the &lt;b&gt;client-side behavior class&lt;/b&gt;. This JavaScript class initializes the map control’s framework and initializes jQuery resizable too. This client-side behavior class is automatically instantiated by the extender control implementation and its initialize method automatically called. The behavior class also synchronizes the map control with the resizability on the control, by implementing some client events. To finalize the client-side implementation, I’ve &lt;b&gt;embedded the script file as resource to the project&lt;/b&gt; and declared the necessary classes to register the script to the ADAM Web 5 framework. 
&lt;/p&gt;&lt;p&gt;
The last thing I’ve done is created the &lt;b&gt;panel control&lt;/b&gt; itself, using the PIM Studio plug-in mechanism. Unfortunately the PanelControl class is not yet available in the current release of PIMS (the current version during this blog article is v3.0.1), so I’ve implemented the &lt;b&gt;IPanelControl interface&lt;/b&gt; on top of a ASP.NET composite control. This control will render a ASP.NET panel, two text boxes, the newly created extender control (extending the inner panel) and some literals. &lt;br /&gt;
The panel also implements the PIMS’s &lt;b&gt;IFieldsHandler interface&lt;/b&gt;, because it handles fields that no longer need to be displayed in the remaining fields panel. Which fields the panel is handling, is configured in the parameters of the panel itself. &lt;br /&gt;
The last interface the panel control is implementing, is the &lt;b&gt;IBinderControl interface&lt;/b&gt;. This interface is part of the ADAM Web 5 data binding framework. It allows you to anticipate changes to the stateful data item during post back. For example: some other panel has access to the co-ordinate fields just as well as our geo-location panel, and may have changed their value after the data bind. By adding this interface to the panel we are required to implement the RefreshDataBind method, which is called automatically for refreshing the data from the data item to the data controls.
&lt;/p&gt;&lt;h3&gt;Configuring the panel&lt;/h3&gt;&lt;p&gt;
For configuration I've done the following steps:
&lt;/p&gt;&lt;p&gt;
I’ve added this configuration to the &lt;b&gt;PIM Studio Panels&lt;/b&gt; setting category:
&lt;pre name="XML"&gt;
&amp;lt;panelControl type="Adam.Pims.PlayDay.GeoLocationPanel, Adam.Pims.PlayDay"&amp;gt;
 &amp;lt;initialState&amp;gt;Opened&amp;lt;/initialState&amp;gt;
 &amp;lt;parameters&amp;gt;
  &amp;lt;parameter key="LatitudeFieldName"&amp;gt;PLAYDAY_Latitude&amp;lt;/parameter&amp;gt;
  &amp;lt;parameter key="LongitudeFieldName"&amp;gt;PLAYDAY_Longitude&amp;lt;/parameter&amp;gt;
 &amp;lt;/parameters&amp;gt;
&amp;lt;/panelControl&amp;gt;
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
And I added a reference in the &lt;b&gt;Default Edit Product Form View Template&lt;/b&gt;:
&lt;pre name="XML"&gt;
 ...
 &amp;lt;add name="PLAYDAY_GeoLocationPanel"&amp;gt;
   &amp;lt;initialState&amp;gt;Opened&amp;lt;/initialState&amp;gt;
 &amp;lt;/add&amp;gt;
 ...
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
The last step in configuring the panel was adding two numeric fields called &lt;b&gt;PLAYDAY_Latitude&lt;/b&gt; and &lt;b&gt;PLAYDAY_Longitude&lt;/b&gt; with both 0.000001 accuracy registered under the &lt;b&gt;PIMS/Categories&lt;/b&gt; classification. 
&lt;/p&gt;&lt;h3&gt;The result&lt;/h3&gt;&lt;p&gt;
The result of this panel on a clean install of PIMS 3.0.1 looks like this:
&lt;/p&gt;&lt;p&gt;&lt;img src='http://blogs.adamsoftware.net/Files/9e312d7fafa5491297ceba0a249195db.jpg' alt="" title="screenshot" border="0" width="569" height="320" /&gt;&lt;/p&gt;&lt;p&gt;
The source code for this panel is available in this blog post.
&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Two Flavors of Marketing Content Localization</title><link>http://blogs.adamsoftware.net/Sales_&amp;_Marketing/TwoFlavorsofMarketingContentLocalization.aspx</link><description>&lt;div&gt;&lt;p&gt;The need to create and use more relevant marketing messages and materials is prompting marketers to focus on “localizing” their content. In an earlier post, I described a recent survey by the CMO Council which shows that 86% of marketers intend to look for better ways to localize content.&lt;/p&gt;&lt;p&gt;Customizing messages and materials for specific audiences has traditionally forced marketers to make an unattractive trade-off between losing control of brand messaging and brand presentation or incurring excessive costs. Fortunately, now they have access to technology tools that can render this trade-off unnecessary. In fact, a comprehensive Marketing Execution Platform (MEP) will support two distinctive and complementary approaches to content localization. I refer to these two approaches as self-directed localization and menu-driven localization.&lt;/p&gt;&lt;h3&gt;Self-Directed Localization&lt;/h3&gt;&lt;p&gt;
Self-directed localization provides the greatest degree of flexibility to local teams. When this approach is used, corporate headquarters provides local teams access to brand-compliant assets (logos, images, etc.) and allow the local marketers to develop localized materials using those assets. Corporate marketers can also provide high-level templates to guide the development of materials.&lt;/p&gt;&lt;p&gt;Self-directed localization is appropriate when:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Local entities (national/regional offices, etc.) have significant marketing resources and expertise.&lt;/li&gt;&lt;li&gt;Corporate marketers cannot predetermine the customization options that will be effective.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
The key technology enabler of self-directed localization is the digital asset management capabilities of a Marketing Execution Platform. DAM solutions enable corporate marketers to provide easy and controlled access to approved assets. And, if a company requires approval of localized materials, a DAM solution can streamline the approval process.&lt;/p&gt;&lt;h3&gt;Menu-Driven Localization&lt;/h3&gt;&lt;p&gt;
Menu-driven localization provides less, but still significant, flexibility for content localization. When this approach is used, corporate marketers provide local teams (and other authorized users) access to templates of materials such as marketing collateral documents, promotional items, and point-of-sale materials. These templates identify which components of the item can be modified, and, most importantly, they provide a menu of customization options. With this approach, local marketers and other users can localize/customize marketing materials, but only in certain predetermined ways.&lt;/p&gt;&lt;p&gt;Menu-driven localization is appropriate when:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Local users (salespeople, sales channel partners, etc.) do not have extensive marketing resources or expertise.&lt;/li&gt;&lt;li&gt;Corporate marketers can predetermine what customization options will likely be effective.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
The primary technology tool for supporting menu-driven localization is the marketing asset management/web-to-print capabilities of a Marketing Execution Platform.&lt;/p&gt;&lt;p&gt;
Many companies (especially large enterprises) need both approaches to realize the full potential of content localization, and a Marketing Execution Platform will provide all of the required technological capabilities.&lt;/p&gt;&lt;/div&gt;</description></item><item><title>From Digital Asset Management to Digital Asset Production</title><link>http://blogs.adamsoftware.net/Sales_&amp;_Marketing/FromDigitalAssetManagementtoDigitalAssetProduction.aspx</link><description>&lt;div&gt;&lt;p&gt;Since their inception, digital asset management solutions have focused primarily on helping users catalog, store, find, and retrieve digital assets.  This focus is understandable since, without a DAM system, valuable digital assets can easily get lost in a labyrinth of file folders with no reliable way to identify or find them.&lt;/p&gt;&lt;p&gt;
Traditional DAM systems provided few capabilities to manage the production of digital assets.  For example, they typically lacked robust functionality for supporting production workflows and managing the other activities that are required to create marketing assets. These kinds of capabilities are critical to maximizing marketing productivity, especially in large enterprises that produce assets on a daily basis.&lt;/p&gt;&lt;p&gt;
If you’re looking for technology to manage digital asset production, you’ll need more than a traditional DAM solution. Fortunately, some DAM software providers now offer more robust support for digital asset production. When you’re evaluating DAM products, it’s important to have a clear picture of what production scenarios you need to support. That being said, there are two features that are essential for an effective digital asset production system.&lt;/p&gt;&lt;h3&gt;Integration with “Production” Software&lt;/h3&gt;&lt;p&gt;
Most marketing assets are created with software tools such as those found in Adobe’s Creative Suite. To maximize marketing productivity, these production software tools must be tightly integrated with the DAM system. For example, users should be able to add new assets to the DAM system from within a production software tool such as InDesign or Photoshop. When a user opens an asset file in Photoshop or InDesign, the DAM system should “check out” the asset and enable the user to determine when to check the asset in, again from within the production software.&lt;/p&gt;&lt;p&gt;
This level of integration significantly reduces the learning curve associated with DAM software and encourages regular use of the DAM system.&lt;/p&gt;&lt;h3&gt;Business Process Design/Automation&lt;/h3&gt;&lt;p&gt;
The second essential requirement is the ability to support marketing workflow design and automation. In many large organizations, the processes used to approve marketing assets are complex, manual, and inefficient. Often they involve numerous individuals, some of whom are separated by thousands of miles. When you consider the number of assets involved and the likelihood that some will require multiple approval “loops,” it’s apparent that manual approval workflows just aren’t efficient.&lt;/p&gt;&lt;p&gt;
A robust DAM system will enable you to tailor your approval processes to your specific needs and embed those processes in the DAM software. This makes even complex approval processes easy to deploy and execute.
When you’re evaluating DAM solutions, you should look for the ability to support three levels or types of process/workflow automation:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Status-driven workflows—The simplest form of automation, where an asset automatically moves to the next stage of a workflow when it is flagged as ready.&lt;/li&gt;&lt;li&gt;Rules-based workflows—Workflows that are defined using a series of “if-then” business rules.&lt;/li&gt;&lt;li&gt;Complete business process management—The ability to incorporate and execute marketing/asset management workflows as part of a complete business process management system, including the ability to design complete workflows using a visual tool such as Microsoft Visio.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These capabilities will enable you to move from efficient digital asset management to efficient digital asset production.&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Price Strikethrough ItemGroup Builder</title><link>http://blogs.adamsoftware.net/PageBuilder/PriceStrikethroughItemGroupBuilder.aspx</link><description>&lt;div&gt;&lt;p&gt;
                                Everyone knows these advertisements where the original price of a product is striked
                                through and the promo price is put bigger? For those who don't remember, take a
                                look at following example.
                                &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img width="300px" src='http://blogs.adamsoftware.net/Files/70fa6cdfcdc9492595002985e9eeeae4.jpg' /&gt;&lt;p&gt;Except a regular text strikethrough InDesign does not have the possibility to create a diagonal strikethrough. You can get the desired effect by using a stroke with the 'Line Tool'. It would be nice though to automate the process and replace a strikethrough with a stroke. &lt;/p&gt;&lt;p&gt;
                                Let us take a look if this is possible with our PageBuilder solution. Suppose that
                                your Design Template does not contain such a stroked price, but the tagged text
                                that will be replaced with the old price has been striked through as following example.
                            &lt;/p&gt;&lt;br /&gt;&lt;img width="300px" src='http://blogs.adamsoftware.net/Files/27361ae746574affb53888735a767dcf.jpg' /&gt;&lt;p&gt;
                                Using custom development we will search the document for striked through text and
                                replace the stroke by an actual graphic line.
                            &lt;/p&gt;&lt;h3&gt;
                                Scripting&lt;/h3&gt;&lt;p&gt;
                                We shared some custom development cases in the past, but this one is quite different.
                                We won't be using the DocMaker API directly to draw a line, but create a custom
                                javascript to execute in InDesignServer. You only need a custom ItemGroup
                                Builder to be able to append your script. Let's start with that.
                            &lt;/p&gt;&lt;h3&gt;
                                Creating the ItemGroup Builder&lt;/h3&gt;&lt;p&gt;
                                The only thing you need to do here is to override the SaveResult method.&lt;/p&gt;&lt;pre name="c#"&gt;
using System.Globalization;
using Adam.Core;
using Adam.DocMaker.Core;
using Adam.PageBuilder.Core.Build;

namespace Adam.PageBuilder.Core.Tests.CustomDev
{
    internal class PromoPriceItemGroupBuilder : ItemGroupBuilder
    {
        public PromoPriceItemGroupBuilder(Application application)
            : base(application) {}

        protected override void SaveResult(Document document)
        {
            string appendScript = string.Format(
                CultureInfo.InvariantCulture,
                "var document = {0}; {1}",
                Document.ScriptIdentifier,
                ScriptResources.CreateStrikeThroughLine);

            document.PublishToServer(
                appendScript, 
                DocumentReloadMode.PartialReload);
            base.SaveResult(document);
        }
    }
}
             &lt;/pre&gt;&lt;p&gt;
                                We use the 'Document.ScriptIdentifier' to reference the loaded document in your script.
                                After this, all you need to do is to add the custom script.
                            &lt;/p&gt;&lt;h3&gt;
                                Custom script&lt;/h3&gt;&lt;p&gt;
                                We will use the find text possibilities of Adobe Scripting to search the text that
                                has a strikethrough. For every striked through text we need to find the starting
                                and ending position. As we want to draw our line from bottom to top, the starting
                                position is bottom-left, and the ending position is top-right.&lt;br /&gt;
                                We can use the baseline and horizontalOffset to find these coordinates within the
                                document.&lt;br /&gt;
                                Once we have these coordinates you can create a GraphicLine with the correct coordinates,
                                color and weight.
                            &lt;/p&gt;&lt;pre name="JavaScript"&gt;
// Clear the find preferences.
app.findTextPreferences = NothingEnum.nothing;

// Search the document for the text that has strikethrough
app.findTextPreferences.strikeThru = true;

// Loop the texts and create the graphic line
var strikeThroughTexts = document.findText(true);
var length = strikeThroughTexts.length;
for (var i = 0; i &amp;lt; length; i++) {
    var text = strikeThroughTexts[i];
    createGraphicLine(document, text);
    text.strikeThru = false;
}

// Clear the find preferences after the search.
app.findTextPreferences = NothingEnum.nothing;

function createGraphicLine(document, range) {
    var left = range.horizontalOffset;
    var bottom = range.baseline;
    var right = range.endHorizontalOffset;
    var top = range.endBaseline - range.ascent;

    var properties = { strokeColor: "Paper", strokeWeight: 1.5 };
    var graphicLine = document.graphicLines.add(properties);
    graphicLine.paths.item(0).pathPoints.item(0).anchor = [left, bottom];
    graphicLine.paths.item(0).pathPoints.item(1).anchor = [right, top];
}
             &lt;/pre&gt;&lt;p&gt;
                                If you are new to ExtendScript and InDesign scripting, take a look at the InDesign
                                Scripting Guide that is available through the &lt;a target='_blank' href="http://www.adobe.com/devnet/indesign/sdk.html" target="new"&gt;Adobe InDesign SDK&lt;/a&gt;.
                            &lt;/p&gt;&lt;p&gt;
                                When the prebuilt item is ready, the result looks like following picture.&lt;/p&gt;&lt;br /&gt;&lt;img width="300px" src='http://blogs.adamsoftware.net/Files/2316a952098e44b99abb4e37f70cc324.jpg' /&gt;&lt;/div&gt;</description></item><item><title>Streamline the Supply Chain to Improve the Marketing-Sales Relationship</title><link>http://blogs.adamsoftware.net/Sales_&amp;_Marketing/StreamlinetheSupplyChaintoImprovetheMarketingSalesRelationship.aspx</link><description>&lt;div&gt;&lt;p&gt;
Improving the relationship between marketing and sales has become an important objective for many business-to-business enterprises.  Changes in the way that business buyers access information and evaluate potential purchases make it essential that both work collaboratively to create and deliver compelling messages and materials. 
&lt;/p&gt;&lt;p&gt;Most of the efforts to improve this relationship have focused on the content of demand generation messages and materials and on the responsibilities of each in the lead generation/lead nurturing process.  These are important issues that deserve the attention they’re receiving.  But, there’s another component of the marketing-sales relationship that’s often overlooked—the reliability and responsiveness of the supply chain for marketing material (Sales collateral, promotional items, and point-of-sale materials).&lt;/p&gt;&lt;h3&gt;The challenge of obtaining materials&lt;/h3&gt;&lt;p&gt;A recent survey by the CMO Council revealed that salespeople are fairly satisfied with the content of the collateral, but that the process of obtaining materials and the delivery of it need significant improvement.
Consider just a couple of the major findings from the CMO Council survey:
&lt;ul&gt;&lt;li&gt;Two-thirds (67%) of survey respondents said they had experienced challenges or issues in obtaining marketing materials.&lt;/li&gt;&lt;li&gt;Thirty-four percent of respondents said it takes “far too long” to receive requested materials, 29% said that materials are not received in time for scheduled product launches, and 13% said that materials are often received damaged or in poor condition.
  &lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;A dysfunctional marketing materials supply chain creates several problems. First and foremost, materials that are late or damaged can negatively impact sales.  In today’s hyper-competitive environment, every interaction with a prospect is critical, and sales can easily be lost if materials are delivered late or in poor condition.
  &lt;/p&gt;&lt;p&gt;Supply chain problems can also lead to waste and excessive costs.  In the CMO Council survey, 72% of participating sales reps said they had over-ordered and stockpiled marketing materials, and 80% of those salespeople said their orders were inflated by 20% or more.  Inflated orders create an inaccurate measure of material needs, which leads to both over-production and higher rates of obsolescence.
  &lt;/p&gt;&lt;h3&gt;A reliable and responsive marketing supply chain&lt;/h3&gt;&lt;p&gt;A marketing execution platform provides the technological foundation for a reliable and responsive supply chain.  The web-to-print component of a marketing execution platform makes ordering Sales material quick and easy, and because MEP systems can be directly linked to production/fulfillment partners, order turnaround time can be significantly improved. &lt;/p&gt;&lt;p&gt;The quality of your marketing content is obviously critical to driving increased sales, but so is your ability to support your sales team with an effective marketing materials supply chain.&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Working with rich text in PageBuilder 4</title><link>http://blogs.adamsoftware.net/PageBuilder/WorkingwithrichtextinPageBuilder4.aspx</link><description>&lt;div&gt;&lt;p&gt;
One of the new features of PageBuilder 4 is that tags in templates can be resolved with rich text content.
When HTML field values are encountered, the HTML content is mapped to semantically equivalent InDesign content. 
This means that HTML tables are mapped to InDesign tables, HTML lists are mapped to InDesign lists, 
HTML paragraphs are mapped to InDesign paragraphs and so on.
&lt;/p&gt;&lt;p&gt;
The way rich text has been implemented in PageBuilder is consistent with DocMaker,
which should be no surprise since PageBuilder 4 is implemented on top of the DocMaker API. 
If you want to get a feel for the kind of rich text content that can be processed this way, you can use the rich text editor in 
DocMaker Studio to experiment with supported HTML tags, or to inspect the HTML and CSS code that is produced for 
existing InDesign content.
&lt;/p&gt;&lt;p&gt;
However, if you do not have access to DocMaker Studio and you want to start using rich text in your PageBuilder 
catalogs, it might be useful to have a list of supported HTML tags and attributes at hand. As a general rule of thumb, 
we try to parse HTML in a liberal way (e.g. both the &amp;lt;b&amp;gt; and the &amp;lt;strong&amp;gt; tag can be used to 
produce bold text in InDesign). HTML tags that cannot be mapped to InDesign content in a straightforward way 
will simply be ignored (e.g. &amp;lt;quote&amp;gt; or &amp;lt;hr&amp;gt;).
&lt;/p&gt;&lt;h3&gt;Supported HTML tags and attributes&lt;/h3&gt;&lt;h4&gt;Paragraphs&lt;/h4&gt;&lt;p&gt;&lt;b&gt;&amp;lt;p&amp;gt;&lt;/b&gt;, &lt;b&gt;&amp;lt;h1&amp;gt;&lt;/b&gt;, &lt;b&gt;&amp;lt;h2&amp;gt;&lt;/b&gt;, &lt;b&gt;&amp;lt;h3&amp;gt;&lt;/b&gt;, 
&lt;b&gt;&amp;lt;h4&amp;gt;&lt;/b&gt;, &lt;b&gt;&amp;lt;h5&amp;gt;&lt;/b&gt;, &lt;b&gt;&amp;lt;h6&amp;gt;&lt;/b&gt; tags are all converted to 
InDesign paragraphs. 
&lt;/p&gt;&lt;p&gt;
The following CSS style properties can be used for additional paragraph formatting: 
&lt;b&gt;text-align&lt;/b&gt; ("&lt;b&gt;left&lt;/b&gt;", "&lt;b&gt;right&lt;/b&gt;", "&lt;b&gt;center&lt;/b&gt;" or 
"&lt;b&gt;justify&lt;/b&gt;"), &lt;b&gt;margin-top&lt;/b&gt; (for vertical spacing before paragraph), 
&lt;b&gt;margin-bottom&lt;/b&gt; (for vertical 
spacing after paragraph), &lt;b&gt;margin&lt;/b&gt; (for vertical spacing before and after paragraph). 
&lt;/p&gt;&lt;p&gt;
Example: &amp;lt;p style="text-align:left; margin-top:10pt;"&amp;gt;.
&lt;/p&gt;&lt;h4&gt;Lists&lt;/h4&gt;&lt;p&gt;
Use &lt;b&gt;&amp;lt;ul&amp;gt;&lt;/b&gt; for bullet lists and &lt;b&gt;&amp;lt;ol&amp;gt;&lt;/b&gt; for numbered lists 
(you can use the "&lt;b&gt;start&lt;/b&gt;" attribute to specify the first number).
&lt;/p&gt;&lt;h4&gt;Tables&lt;/h4&gt;&lt;p&gt;
Use &lt;b&gt;&amp;lt;table&amp;gt;&lt;/b&gt; for tables with &lt;b&gt;&amp;lt;tr&amp;gt;&lt;/b&gt; for rows and &lt;b&gt;&amp;lt;td&amp;gt;&lt;/b&gt; or 
&lt;b&gt;&amp;lt;th&amp;gt;&lt;/b&gt; for cells. You can use &lt;b&gt;&amp;lt;thead&amp;gt;&lt;/b&gt;, &lt;b&gt;&amp;lt;tbody&amp;gt;&lt;/b&gt;, 
&lt;b&gt;&amp;lt;tfoot&amp;gt;&lt;/b&gt; to specify parts of the table that contain header rows, body rows or footer rows.
&lt;/p&gt;&lt;h4&gt;Formatting&lt;/h4&gt;&lt;p&gt;
You can use &lt;b&gt;&amp;lt;font&amp;gt;&lt;/b&gt; to specify the font, &lt;b&gt;&amp;lt;strong&amp;gt;&lt;/b&gt; or 
&lt;b&gt;&amp;lt;b&amp;gt;&lt;/b&gt; for bold style (if supported by the font), &lt;b&gt;&amp;lt;em&amp;gt;&lt;/b&gt; or 
&lt;b&gt;&amp;lt;i&amp;gt;&lt;/b&gt; for italic style (if supported by the font), &lt;b&gt;&amp;lt;u&amp;gt;&lt;/b&gt; for underline, 
&lt;b&gt;&amp;lt;sub&amp;gt;&lt;/b&gt; for subscript and &lt;b&gt;&amp;lt;sup&amp;gt;&lt;/b&gt; for superscript. 
&lt;/p&gt;&lt;p&gt;
However you can also use &lt;b&gt;&amp;lt;span&amp;gt;&lt;/b&gt; tags with CSS formatting instead. 
The following style properties are supported: &lt;b&gt;font-family&lt;/b&gt;, &lt;b&gt;font-size&lt;/b&gt;, 
&lt;b&gt;color&lt;/b&gt; (you can use either "#FF0000", "rgb(255,0,0)" or 
"Red"), &lt;b&gt;font-style&lt;/b&gt; ("&lt;b&gt;italic&lt;/b&gt;" or "&lt;b&gt;normal&lt;/b&gt;"), 
&lt;b&gt;font-weight&lt;/b&gt; ("&lt;b&gt;bold&lt;/b&gt;" or "&lt;b&gt;normal&lt;/b&gt;"), &lt;b&gt;text-decoration&lt;/b&gt; 
("&lt;b&gt;underline&lt;/b&gt;" or "&lt;b&gt;none&lt;/b&gt;"), &lt;b&gt;vertical-align&lt;/b&gt; ("&lt;b&gt;sub&lt;/b&gt;" 
or "&lt;b&gt;super&lt;/b&gt;").
&lt;/p&gt;&lt;p&gt;
Example: &amp;lt;span style="font-weight:bold; vertical-align: super;"&amp;gt;
&lt;/p&gt;&lt;h3&gt;Using InDesign styles in HTML&lt;/h3&gt;&lt;p&gt;
InDesign styles can be used to achieve additional effects, e.g. to apply formatting options that cannot be 
expressed in HTML or that are not yet supported in the DocMaker API. The CSS &lt;b&gt;class&lt;/b&gt; attribute can be 
used to apply paragraph styles (e.g. &amp;lt;p class="par100"&amp;gt;), character styles (e.g. &amp;lt;span class="char100"&amp;gt;),
table styles (e.g. &amp;lt;table class="tab100"&amp;gt;) or cell styles (e.g. &amp;lt;td class="cell100"&amp;gt;).
&lt;/p&gt;&lt;p&gt;
You can only use InDesign styles that have been defined in your templates, and you need to specify them by 
class name (e.g. "par100") rather than by full name (e.g. "My Paragraph Style"). In DocMaker Studio, 
you can easily figure out the class name for each style by inspecting the CSS that is generated for your template
document. When using PageBuilder in isolation, you could use the following code to output 
the class names for the styles defined in your templates:
&lt;/p&gt;&lt;p&gt;&lt;pre name="C#"&gt;
using System;
using Adam.Core;
using Adam.Core.Records;
using Adam.DocMaker.Core;

namespace SampleCode
{
 public class WriteStyles
 {
  public static void Main(string [] args)
  {
   Application application = new Application();
   if (application.LogOn("userName", "password") == LogOnStatus.LoggedOn)
   {
    foreach (string filePath in args)
    {
     Console.WriteLine(string.Format("Styles defined in {0}:", filePath));

     Record record = new Record(application);
     record.AddNew();
     record.Files.AddFile(filePath);

     using (Document document = Document.CreateFromFile(record.Files.Master))
     {
      foreach (ParagraphStyle paragraphStyle in document.ParagraphStyles)
      {
       WriteStyle(paragraphStyle);
      }
      foreach (CharacterStyle characterStyle in document.CharacterStyles)
      {
       WriteStyle(characterStyle);
      }
      foreach (TableStyle tableStyle in document.TableStyles)
      {
       WriteStyle(tableStyle);
      }
      foreach (CellStyle cellStyle in document.CellStyles)
      {
       WriteStyle(cellStyle);
      }
     }
    }
   }
  }

  private static void WriteStyle(Style style)
  {
   Console.WriteLine(string.Format("{0} {1}: {2}", style.GetType().Name, style.Name, style.CssClassName));
  }
 }
}
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;
This simple console application expects one or more paths to InDesign templates as arguments and yields the following sample output:
&lt;/p&gt;&lt;p&gt;&lt;pre&gt;
Styles defined in C:\MyTemplate.indd:
ParagraphStyle [No Paragraph Style]: par104
ParagraphStyle [Basic Paragraph]: par108
ParagraphStyle Green: par248
ParagraphStyle Blue 24pt: par256
ParagraphStyle Blue: par246
ParagraphStyle Green 24pt: par254
CharacterStyle [None]: char103
CharacterStyle Italic Underline: char260
CharacterStyle Italic: char258
CharacterStyle Underline: char259
TableStyle [No Table Style]: tab123
TableStyle [Basic Table]: tab125
CellStyle [None]: cell121
&lt;/pre&gt;&lt;/p&gt;&lt;/div&gt;</description></item><item><title>Using GroupSettingConflictResolver to manually resolve setting value conflicts</title><link>http://blogs.adamsoftware.net/Engine/UsingGroupSettingConflictResolvertomanuallyresolvesettingvalueconflicts.aspx</link><description>&lt;div&gt;&lt;p&gt;
About time for another development post, no?!
&lt;/p&gt;&lt;p&gt;
A little known feature in the ADAM engine is the &lt;b&gt;GroupSettingConflictResolver&lt;/b&gt;. 
It allows you to manually determine the setting value in case of conflicts, but it can also be used to do some manipulations 
to the stored value in order to convert or extract the value you want (e.g. extract a certain element's value from an XML setting).
&lt;/p&gt;&lt;h3&gt;Resolving setting value conflicts&lt;/h3&gt;&lt;p&gt;
Suppose a user is a member of two different usergroups (e.g. group1 and group2), which each have a different value for some setting ("Value A" vs "Value B").
&lt;/p&gt;&lt;pre name="C#"&gt;
TextSetting setting = new TextSetting(TestInfo.Application);
setting.LoadUserGroupValue("mySetting", group1.Id);
setting.Value = "Value A";
setting.Save();
setting.LoadUserGroupValue("mySetting", group2.Id);
setting.Value = "Value B";
setting.Save();
&lt;/pre&gt;&lt;p&gt;
By default, ADAM will resolve the conflict by taking the maximum value of the conflicting values. This behavior can be overriden through the SettingDefinition's 
UserGroupSettingMode property.
&lt;br /&gt;
The available options are:
&lt;ul&gt;&lt;li&gt;None: setting value can not be assigned to a group.&lt;/li&gt;&lt;li&gt;MinValue: takes the minimum value of a user's group setting values.&lt;/li&gt;&lt;li&gt;MaxValue: takes the maximum value of a user's group setting values&lt;/li&gt;&lt;li&gt;Manual: manually resolve conflicts by specifying a &lt;b&gt;GroupSettingConflictResolver&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
So, when taking the example above: app.GetSetting("mySetting") in case of MinValue would return "Value A", whilst MaxValue would return "Value B".
&lt;br /&gt;
In case of Manual, you would get an exception. Those settings' value need to be fetched through the method overload 
GetSetting(string setting, GroupSettingConflictResolver conflictResolver), allowing you to manually determine the value to return.
&lt;/p&gt;&lt;pre name="C#"&gt;
app.GetSetting("mySetting", values =&amp;gt; values.ToArray().Cast&amp;lt;string&amp;gt;().FirstOrDefault());
&lt;/pre&gt;&lt;h3&gt;Manipulating setting value&lt;/h3&gt;&lt;p&gt;
A slightly more advanced scenario for the GroupSettingConflictResolver is additional manipulation of the stored setting value when retrieving it. 
You could for example extract some specific data from an XML setting using a GroupSettingConflictResolver, as shown in the example below.
&lt;/p&gt;&lt;pre name="C#"&gt;
XmlSetting setting = new XmlSetting(TestInfo.Application);
setting.LoadUserGroupValue("myXmlSetting", group1.Id);
setting.Value = "&amp;lt;val&amp;gt;Value A&amp;lt;/val&amp;gt;";
setting.Save();
...
app.GetSetting("myXmlSetting", values =&amp;gt; 
 {
  // assuming there's only one setting value
  string xml = values.ToArray().Cast&amp;lt;string&amp;gt;().FirstOrDefault();
  return XElement.Parse(xml).Value;
 });
&lt;/pre&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;p&gt;
So now you know how you can manually resolve potential conflicting group setting values in a way that makes more sense to your scenario. Have fun!
&lt;/p&gt;&lt;/div&gt;</description></item><item><title>The End of Information Silos</title><link>http://blogs.adamsoftware.net/Webinars/TheEndofInformationSilos.aspx</link><description>&lt;div&gt;&lt;p&gt;
In the world of business, the term &lt;i&gt;silo&lt;/i&gt; almost always has negative connotations. It’s typically used to describe a  department or other business unit that does not communicate or share common  goals with other functional units of the enterprise. Functional silos usually lead to duplicated business processes, a lack of innovation, and the inability to respond quickly and effectively to customer needs and changing marketing conditions. Therefore, silos often result in excessive costs and process inefficiencies, and they can depress revenue growth and profitability.&lt;/p&gt;&lt;p&gt;The silo concept has also been applied to data/information and to information management systems of various kinds. In this context, an &lt;i&gt;information silo&lt;/i&gt; is an information management system that does not exchange or share data/information with other technology systems in the same  enterprise or, in some cases, with systems used by customers, vendors, or  business partners. Information silos are particularly pernicious because they prevent enterprise leaders from getting a complete and holistic view of business issues and business performance. Therefore, information silos contribute to inappropriate decisions.&lt;/p&gt;&lt;h3&gt;Complex Landscape&lt;/h3&gt;&lt;p&gt;Both functional and technological/information-related silos often exist in the marketing operations of large enterprises. Many large enterprises have traditionally organized the marketing function by marketing channels. For example, one group of internal marketers and/or external business partners (ad agencies, production vendors, etc.) create and execute TV advertising campaigns. Other internal marketers and business partners are responsible for traditional direct marketing programs, and yet another group handles online marketing programs. The landscape becomes even more complex if you consider marketing collateral development, event marketing, packaging, and public relations.&lt;/p&gt;&lt;p&gt;Companies  have always attempted to maintain a relatively consistent brand message, but  these channel-focused marketing teams usually functioned independently, and  they rarely shared detailed information about prospects/customers or actual  marketing assets. As a result, marketing messages and materials may not have been contradictory, but neither were they tightly coordinated and mutually reinforcing.&lt;/p&gt;&lt;h3&gt; A new set of challenges&lt;/h3&gt;&lt;p&gt;Today, marketers face a new set of challenges, driven largely by the proliferation of marketing channels and the growing insistence on greater relevance in marketing messages and materials. In addition, prospects and customers now want to interact with enterprises through a variety of communication channels, and they expect companies to speak with a consistent voice through all channels.&lt;/p&gt;&lt;p&gt;This level of multichannel coordination and message consistency cannot be achieved  if important marketing information and marketing assets remained trapped in  silos. The good news is that marketing information silos are no longer inevitable.&lt;/p&gt;&lt;p&gt;On  &lt;b&gt;March 15, 2012&lt;/b&gt;, Mark Davey, the founder of the &lt;a target='_blank' href="http://damfoundation.org/"&gt;DAM Foundation&lt;/a&gt;, Ltd., will  present a webinar titled, &lt;i&gt;The Coming Fall  of Silo Information and Thinking or Web 3.0&lt;/i&gt;. This webinar is a distilled  version of the well-received presentation that Mark gave at ADAM Software’s  Media Intelligence 2012 event held earlier this year.&lt;br /&gt;
  In  this webinar, Mark will describe the evolution of the web and explain why the  emergence of &lt;i&gt;linked data&lt;/i&gt; is about to  change the way we do business.&lt;br /&gt;&lt;a target='_blank' href="http://www.adamsoftware.net/en/knowledge-base/webcasts-and-webinars/future-webcasts-sign-up/webinar-signup-the-coming-fall-of-silo-information-and-thinking-or-web/"&gt;Register here&lt;/a&gt; for this important and informative presentation.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;/div&gt;</description></item></channel></rss>
