Using InDesign CS6 Server with CQ5.5

Many of my customers have learned that CQ5.5 DAM can be used in conjunction with InDesign Server to extract content from InDesign documents and make them available for use in web pages in CQ. This worked great with CQ5.5 and InDesign CS5.5 Server, but failed with InDesign CS6 Server. I have an easy fix that enables InDesign content extraction for CQ5.5 and InDesign CS6 Server workflows.

First, start up your CQ Author environment and log in. Open CRXDE and search for spaceUnit. It will show up in one of the InDesign scripts.

If you don’t want to search, here’s the link to the jsp.

http://localhost:4502/crx/de/index.jsp#/crx.default/jcr%3aroot/etc/dam/indesign/scripts/XHTMLExport.jsx

Direct path here: /etc/dam/indesign/scripts/XHTMLExport.jsx

Right under spaceUnit is another variable called marginUnit. Comment out those two lines of code from the script, and you should be all set.

Apparently spaceUnit and marginUnit were supported in CS5.5 and earlier, but not in CS6.

Also, Adobe Drive 4 is required for DAM integration with CS6 applications. If CS5.5 is in play, then you will need Adobe Drive 3. As of August, 2012, the download link is halfway down the right hand column of the Adobe Drive Product Page. Drive 3 and Drive 4 can coexist if you need to have CS5/5.5 and CS5

Share on Facebook

Single Issue vs Multi Issue Viewers for Enterprise customers

DPS customers have access to tools for creating and managing custom versions of the Adobe Content Viewer that can be distributed through iTunes (like the Wired or National Geographic apps). Additionally, Enterprise DPS customers can build apps for private distribution using an MDM service like MobileIron or Air-Watch. Only Enterprise DPS customers can build apps for Enterprise distribution models, and I have provided an earlier post about that process.

One of the options for the custom viewer is a Single Issue Viewer, in which one folio is embedded directly into the viewer. Single Issue Viewers have no library mode, so they are used by many of our customers who want to use MDM solutions to manage the distribution of specific folios to specific people. However, we have other customers who use MDM to distribute Multi-Issue Viewers to their managed devices, and then use our Restricted Distribution infrastructure to leverage LDAP or other authentication to control access to specific folios in that one viewer app. There are IT advantages to either approach, and I’d like to explore the differences.

In order to use an MDM system to manage apps on an iOS device, each app needs to be created using a specific unique identifier known as a mobileprovision file. Customers make these in the iOS Provisioning Portal, which is part of Apple’s iOS Developer Portal. In the Single Issue approach, each Single Issue Viewer needs a new, unique mobileprovision file from the iOS Provisioning portal. MDM solutions leverage a property of iOS whereby each app must have its corresponding mobileprovision file on the device in order for the app to run. MDM solutions can remove a mobileprovision file on a managed device, rendering the app unusable. When a customer makes a new Single Issue viewer, it must repackage this app to include the new, unique mobileprovision file in a process called resigning. There are several ways to do this, but a popular method is to use iresign from Google. This workflow is very effective because it gives IT fingertip control over each and every app on a managed device, and it allows IT to move DPS Folios in and out of circulation by wrapping them in Single Issue Viewers.

Let’s face it, though. Managing all those apps and mobileprovision files is annoying IT overhead. In the Multi-Issue approach, there is only one mobileprovision file because there is only one Viewer. Content delivery to the Viewer’s Library is based on credentials and is managed by a business user, not IT. The business user can associate content to users or groups in a portal without having to call IT to issue a new mobileprovision file. This portal can be built and managed by corporate IT using sample code from our Developer Center. Derek Lu, for instance, provides detailed instructions and sample code for integrating LDAP with Restricted Distribution. There are also commercially available servers such as Portico from MEI to enable Restricted Distribution workflows in an Enterprise without IT having to develop a backend solution from scratch.

Which method is right for your company? That depends on how you want to manage content. If you want IT to manage everything, then the Single Issue approach might be just what you need for DPS. If you want to reduce the burden on IT and shift content management over to the business users who file the IT tickets in the first place, then Multi-Issue with Restricted Distribution fills the bill. DPS is flexible: your designers create their engaging tablet content in InDesign, IT puts the apps on the devices, and either IT or business users manage the flow of those folios to users. Either way, you can use your MDM system to manage DPS viewers on your company’s tablets.

Share on Facebook

Using Mobile Device Management systems and DPS

Many of my Enterprise customers ask how to use DPS with their Mobile Device Management (MDM) Solution. An MDM Solution is a set of tools that allows an Enterprise to deploy software to employees on managed devices. For instance, if the company has a sales enablement app that they want all of the sales force to use but they do not want to require all of the sales force to bring their iPads in to have the app installed, then they could use an MDM system.

There are many MDM systems available, and this post is not intended to be a tutorial on how to implement DPS in a specific offering. It is intended to explain the current state of affairs and offer some guidance on how to get your DPS app deployed with any MDM solution.

What is a Mobile Device Management Solution?

Mobile Device Management (MDM) Solutions provide Enterprise customers with a means of managing deployment of apps to mobile devices such as phones and tablets.

How is MDM different from DPS with Restricted Distribution?

An MDM solution allows IT to manage the deployment of the Viewer App, while the DPS service allows business users to deploy content to that managed app. These systems work together, based on the business requirements. For example, an Enterprise customer would use an MDM system to deploy the Viewer App and use a Restricted Distribution server to deliver specific content to an authorized user who uses that app.

What is the difference between a Viewer App and a folio?

Viewer apps are the apps that a user taps to view content on their tablet. Folios are the content that those Viewer Apps display. DPS users make Viewer Apps with the Viewer Builder, and they make folios with InDesign or as HTML.

How can DPS and MDM solutions co-exist?

If a company makes a single-issue Viewer App that has the folio content “baked” into the app, then an MDM solution can push the app (with content embedded) to the managed devices. If a company makes a multi-issue app, then the MDM solution will push the app to managed devices, but the DPS service will deliver the content to those managed apps.

How can DPS folios be integrated with Mobile Device Management solutions (e.g. AirWatch, Mobile Iron, etc.)?

MDM solution can manage deployment of Viewer Apps to mobile devices. At this time, the Viewer Builder requires that the administrator who makes the Viewer supply a wildcard Enterprise mobileprovision file at build time. Most MDM systems rely on app-specific Enterprise mobileprovision files to enable or disable an app on a device. It is necessary to re-sign the app with an app-specific Enterprise mobile provision file after building the Viewer. Google’s iResign is a common utility to help with this process.

Update: The DPS App Builder now supports app signing with mobileprovision files that are tied to a specific AppID, so wildcard in-house mobileprovision files are no longer required to build an Enterprise DPS app. As a result of this change, it is no longer necessary to re-sign an app for use in an MDM solution if the app was built with the proper mobileprovision file. In the case where an agency creates an app using their own Enterprise iOS Developer Account and hands it to an enterprise for deployment via MDM, then re-signing may be necessary. iResign is now a GitHub project and is not Google Code project.

 

Can an MDM provider manage the app but allow DPS to update the folio files?

Yes, this is the only way that a multi-issue app can work today. Single-issue apps can be managed in their entirety by MDM systems.

Could an MDM provider distribute an app without DPS involvement?

MDM providers can distribute single-issue folios without DPS involvement, aside from the necessity to build the Viewer itself using the Viewer Builder and an Apple Enterprise certificate.

Does DPS provide analytics on privately distributed apps?

Yes. DPS will provide analytics for single issue and multi-issue apps. Applications can also bind to Adobe Site Catalyst.

Can MDM solutions distribute apps made with a DPS Pro license?

No. MDM solutions require Enterprise Signed Apps in order to circumvent the Apple App Store. Only Adobe Enterprise DPS licenses allow customers to create Enterprise Signed apps.

What is an Enterprise Signed App?

Apple Enterprise Developer Accounts are special agreements with Apple, and an Enterprise Signed App (.ipa file) is one made under this special agreement. Apple allows the Enterprise to make and distribute apps within the Enterprise, and the Enterprise agrees not to allow these apps to be acquired outside of the Enterprise. Customers need Apple Enterprise Developer Accounts in order to make and distribute any app, DPS or otherwise, for internal consumption.

Is there a list of MDM systems that work with DPS?

Any MDM solutions that can distribute Enterprise Signed Apps can distribute applications created by DPS Enterprise Edition. However, some additional steps may be needed to properly sign the app for use in the MDM system. Google’s iResign is a common utility to help with this process.

Below are two diagrams that illustrate the DPS to MDM workflow, with and without Restricted Distribution. 

 

  

 

Additional Info

Learn more about the Apple iOS Enterprise Workflow:
http://developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html
https://developer.apple.com/programs/ios/enterprise/
http://www.apple.com/iphone/business/integration/mdm/

Learn more about building Enterprise Signed Viewer Applications with DPS:
http://www.adobe.com/devnet/digitalpublishingsuite/articles/distributing-enterprise-ios-viewer-apps.html

Share on Facebook

Using Twitter feeds in Adobe DPS

Edit: 7/19/2013  Twitter once again updated its APIs, so this article is inaccurate. I am working on a solution, and will update this article when I have one that works. There is a suggestion over in the DPS Forums, but the results seem to be spotty.

Recently Twitter changed its widgets so that they will no longer run outside of a web site. This presents a problem for folks who have relied on embedded Twitter widgets in their DPS publications. There is a workaround which should present no problem to readers, since they need to be online in order to read Twitter content in the first place.

First, post your widget to a web site, then either refer to it directly from your web overlay or embed an HTML file in your folio that contains an iframe that displays your widget. Here’s a more concrete example.

I have a widget called dpstweets.html, which displays all of the tweets that reference @adobedigitalpub. It resides at http://www.jameslockman.com/dps/jamestweets/dpstweets.html, and it consists of the following code:


<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>DPS Twitter Feed</title>
<style>
 .body
 {background-color:transparent}
</style>
</head>
<body>
<div>
 <script charset="utf-8" src="http://widgets.twimg.com/j/2/widget.js"></script>
 <script>
 new TWTR.Widget({
 version: 2,
 type: 'search',
 search: '@adobedigitalpub',
 interval: 30000,
 title: 'Adobe DPS',
 subject: 'See what\'s trending',
 width: 180,
 height: 187,
 theme: {
 shell: {
 background: '#8ec1da',
 color: '#ffffff'
 },
 tweets: {
 background: '#ffffff',
 color: '#444444',
 links: '#1985b5'
 }
 },
 features: {
 scrollbar: false,
 loop: true,
 live: true,
 behavior: 'default'
 }
 }).render().start();
 </script>
</div></body>
</html>

That in itself is pretty plain vanilla. However, if I were to embed this file into my DPS app as a web overlay, I would get a blank white rectangle. The easiest solution is to make my web overlay point to http://www.jameslockman.com/dps/jamestweets/dpstweets.html. I set it to auto play, allowed interactions, and made it transparent. Of course, that’s hard to see unless you preview the folio on your desktop or on your tablet.

The other solution is the iFrame, and it’s easy to implement.

I made a second HTML file that I called dpsiframe.html, and in the body tag, I put this:

<iframe src="http://jameslockman.com/dps/jamestweets/dpstweets.html" width="200" height="312" frameborder="0" marginheight="0" marginwidth="0">Your browser doesn't support iFrames</iframe>

You can look up how to stylize iFrames with CSS and with their own tags, but once I put this new html file into my web overlay in my folio, it worked like a charm.

CS6 users have an additional bonus feature, though. In InDesign CS6, you can just copy and  paste the <iframe src-” … /iframe> line of code into InDesign, and InDesign will make a nice poster frame of the page for you when you paste. It makes it much easier to figure out how the widget will fit into your layout. Give it a try with my iframe code above, and tell me that’s not awesome. You can’t, can you? Unless, of course, Twitter changes its widgets again and makes them unusable in iFrames.

Share on Facebook

Using content from InDesign documents in CQ5.5

When Adobe acquired Day Software, it got not only a revolutionary Web Content Management system, but also a revolutionary Digital Asset Management platform based on CRX, Day’s implementation of the Java Content Repository. Quick to recognize its potential as a binding agent for an end to end Adobe workflow that included asset creation and management, campaign deployment, measurement and targeting, and campaign refinement, CQ quickly jumped to the forefront of many of our minds here at Adobe.

Adobe Drive 3 can connect to a CQ DAM and provide version control for Creative Suite assets. While this functionality existed with CQ5.4, in CQ5.5, there are some built-in examples of how CQ can extend an InDesign workflow to the Web. CQ5.5 ships with a couple of workflow scripts designed specifically for InDesign Server, which is required for them to function. Without InDesign Server available to CQ, what follows won’t happen. If you are a CQ customer and would like to try this for yourself, download the InDesign Server trial and install it on the same server where you keep CQ5.5. Otherwise, read on and you’ll get a sense of what’s possible with CQ DAM and InDesign Server.

InDesign server must be running and servicing requests on port 8080. On my Mac, I issue the following terminal command to fire up ID Server prior to starting CQ. I assume that it’s similar on Windows:

/Applications/Adobe\ InDesign\ CS5.5\ Server/InDesignServer.app/Contents/MacOS/InDesignServer -port 8080

Once it’s running, it’s safe to start CQ in author mode. We’re looking at an author instance, not a publish instance, from this point forward. Once it’s running, you can mount the repository with Drive 3. Open Drive 3 and connect to your DAM. In my example, I’m running CQ on my local machine, hence the localhost connection.

Once connected, I can browse content in the DAM as if the DAM were a filesystem. CS apps such as Photoshop, Illustrator, InDesign, InCopy and Bridge understand that when CQ DAM is mounted via Drive, they can check files into and out of the DAM and access versions of those files in the DAM. This article isn’t about version control, though, it’s about repurposing content from InDesign in CQ5.5.

When I drop an InDesign file into the DAM via Bridge, Bridge creates a version and checks the file into CQ. In CQ, the appearance of that InDesign file fires off a series of workflow steps that, with the help of InDesign Server, create previews of that file, extract an IDML rendition of that file, extract text and images from that file, and assemble those items into a Page node in CQ. It’s this page node that’s the really, really cool product of ingestion.

Page nodes are reference-able in CQ using a reference component. Normally, when you place a reference component onto a page in CQ, you double click it and browse to the page you want to reference. Unfortunately, when CQ and InDesign Server make the page node of your InDesign file, it places that page into the “renditions” folder, which is a reasonable place to store it. Unfortunately, the Reference component doesn’t know how to look into the Renditions folder for this Page note. Fortunately, a colleague on the Chinese Solutions Consulting team, Joseph Lee, figured out a simple solution that allows us to use this page node as a source of content for other pages on our CQ site.

In the diagram above, the selected page node needs to move up two levels in the hierarchy so that it is at the same level as the jar:content node, just below the InDesign file’s primary node. We can drag it up there in CRXDE Lite, but that’s pretty “dirty,” as Joseph was quick to point out. Looking at the workflow, however, he identified a single modification that puts the page node into a place where it can indeed be found by a reference component. Note that it will no longer appear in the Renditions tab when you browse to the InDesign file in DAM, however. I think that the trade-off is worth it, though.

The change we need to make is in the DAM Update Asset workflow. Browse to your workflows console and double click DAM Update Asset. At the bottom of the workflow, there’s a step called Page Extraction. This is one of the new steps that’s included in CQ5.5. You need to change the Page Root Path to “/.” (do not include the quotes) just like below. This will instruct the workflow to create the page node directly below the InDesign file’s primary node. Once you’ve made the change, click OK and then Save in the upper left hand corner of the window. Now, you’re ready to reuse content from your InDesign files in your CQ pages.

To see this in action, let’s look at what the reference component will see after this workflow change, and after we either ingest a new InDesign file or make a change to it and check it back into the DAM, either of which will trigger the InDesign Page Extraction workflow and fix the page node location. Once you do this, you can now browse to it from a reference component.

In the figure above, I have selected a story that’s present in my InDesign document. Here it is in InDesign:

Now, here it is on my CQ page.

Now, here’s the really, really cool part. Nowhere in this process was I required to send my InDesign document overseas for XML extraction in order to get its content back into my Web Content Management system. Ingestion took literally seconds and allowed my authors to use the text and images from my InDesign documents immediately. In addition, when a user makes a change in InDesign and checks the document back into the DAM, the text will update in my CQ Author instance so that I can gracefully publish it to the Publish instance when I am ready.

Thanks again to Joseph Lee for his elegant but powerful suggestion to expose the page rendition to reference components.

I know that this workflow is a demonstration of capabilities, but what an amazing demonstration it is. A capable developer could develop components and workflows which would allow a CQ user to edit that same referenced copy, and then would fire off a workflow to re-inject that content back into the InDesign document. How about the situation where a CQ user mocks up a page layout and then pushes a button to tell InDesign Server to build an InDesign document using a specific template and the text and images from the repository. The possibilities are endless.

I firmly believe that CQ5.5 and its ability to drive InDesign Server heralds the beginning of a new era in multi-channel communications. Already the lines between print and web and apps are blurred. With InDesign Server and CQ5.5, those lines disappear entirely. Now, content truly becomes independent of presentation, which frees the marketer or publisher to extend their reach in existing channels and expand their businesses into emerging channels.

Share on Facebook