Posts tagged "Collaboration"

Come learn about integrating DPS and CRM systems @AdobeMAX

I will be tag-teaming a session at Adobe MAX with my good friend David Schmidt. He and I will talk about how to integrate Adobe DPS applications with CRM systems such as salesforce.com. If you’ve been wondering how to take your sales enablement app to the next level, then this is definitely a session you won’t want to miss.

S2711 – Integrating DPS with CRM Systems Such as Salesforce.com for Business Impact

David Schmidt – Sr. Product Marketing Manager
James Lockman – Principal Solutions Consultant, Adobe

Learn how combining Digital Publishing Suite with CRM systems like Salesforce.com can enable breakthrough business results for your organization. See how Adobe equips its own sales team with a DPS-based sales enablement tool that allows rich presentations from tablets, access to centralized sales collateral, and powerful collection and analysis of sales metrics.

In this session, we will cover:

    • DPS features and APIs that provide flexible integration options with CRM systems
    • Leveraging DPS built-in analytics so that marketing and communication teams can optimize content and collateral, and easily push updates out to global sales and field personnel
    • Creating powerful management analytics dashboards by combining DPS and CRM data
Share on Facebook

Protecting your Outlook database with Creative Cloud

I use Outlook on my Mac for email and calendaring. While I have access to Office 365 and the web versions of the apps that comprise it, I am more comfortable using the desktop application. In addition, I use email rules to help manage the large volume of messages I receive every day. Since I get a lot of email with a lot of attachments, my Outlook database gets large very quickly. Also, it goes corrupt from time to time. When I rebuild the database, very often my mail rules get confused and they need to be adjusted to point at the appropriate target folders. This is annoying. I decided that I needed to come up with a plan to make it easier to recover from database failure, and this article provides a solution, or at least some security if not a true solution.

Creative Cloud offers desktop file syncing for customers who install the Creative Cloud Desktop app. This works much like Dropbox, in that there is a folder on your computer that the CC Desktop app syncs with your CC folders online. This is a very handy feature for sure. You can learn how to enable desktop file syncing here. You can also share a folder with one or more other Creative Cloud users. In that case, all of the collaborators have access to the same files on their desktop. This is handy if you are working with a team and need to ensure that you all have the most current assets. You can learn how to share a folder with another Creative Cloud user here.

One of the benefits of using CC file sync is that your files are versioned in the cloud, which means that when you replace a file in your synced folder on your computer, the previous version is stored in the Cloud along with your current version. According to the CC Versioning FAQ, The Creative Cloud stores previous versions for 10 days, which is long enough for most users to be able to recover from a disastrous “Save” when you should have chosen “Save As…” Versioning is also our friend when we consider the Outlook database, because if I have previous versions of the database available, then I can roll back to a previous state and get back to work. Unfortunately, Outlook writes to the database frequently, so it is not a good idea to put your Microsoft User Data folder in your Creative Cloud folder. If you do, then CC will try to sync your Outlook database all the time, causing errors on both the CC side and on the Outlook side. A better strategy is to copy the Outlook database to a folder in CC on a schedule.

I use Automator to copy the Database, but it’s not as simple as “copy the Outlook database to my Creative Cloud folder.” Before you copy the database, however, it is best to ensure that Outlook is done with it. The best way to ensure that the database is “at rest” is to quit Outlook. Once Outlook has shut down, then it is safe to copy the database. When the copy is finished, then we need to restart Outlook. At the end, it is polite to send a message that the operation was successful. If you follow this flow, then you will safely have a versioned backup of your Outlook database going back 10 days.

In Automator, I created a workflow and used Calendar to schedule it. It uses the following actions in sequence:

  1. Quit Application: Microsoft Outlook
  2. Get Specified Finder Items: your Outlook Database file (not the enclosing folder)
  3. Copy Finder Items: to a folder in Creative Cloud called Database Backup
  4. Launch Application: Microsoft Outlook
  5. Display Notification Center Alert: Some message to let you know everything was successful

In order to send a Notification Center alert, I used a nifty Automation Action from Automated Workflows, LLC. Read about it and get it here.

The backup Outlook workflow in Automator

The backup Outlook workflow in Automator

If you would like to download the workflow and modify it for your own use, you can download the BackupOutlookDatabase workflow. Unzip the workflow and double click it to install. You will need to modify the workflow in order for it to work properly. Whether you download mine and modify it or make your own, you need to save the workflow and then save it again as an application in order to execute it with iCal.

To save your workflow as an application, you need to expose hidden menu options in Automator. Hold down the Option Key and click the File menu. You will now see Save As… Choose it and then save your workflow as an Application to a place you can find later.

Advanced Options in File Menu

Hold down the Option Key to expose Advanced Options in File Menu

Save as Application

Save as Application

Now, you need to schedule the workflow to run at a convenient time. I used Calendar to schedule the event, since the whole premise here is that the Outlook Database can become corrupt. If we use Calendar, then there is some built-in peace of mind because we’re using another system to backup the system of record. In Calendar, create a new calendar called Automator so you can hide the daily backup events. In the Automator Calendar, create a new event called “Backup Outlook” at a convenient time for you. I chose 2:00 am Eastern Time. Set this event to recur every day with no expiration. Set the action to Open File>Other… and browse to your Automator Workflow Application that you made in the last step.

Det the calendar event properties

Det the calendar event properties

There you have it: an automated backup for your Outlook Database using your Creative Cloud account. It is important to note that your computer needs to be in a state to run the Workflow at the time you designate, so if you have a laptop, you might want to leave it open or on overnight. It’s OK if the computer goes to sleep. The workflow will run so long as the computer isn’t powered down.

I mentioned that another benefit of using Creative Cloud for the backup is that the Database will be versioned in the cloud. This lets you go back in time if you inadvertently backup a corrupt database and need to go back a few days. To view file versions in Creative Cloud, go to your Creative Cloud account in a browser and click on Files, then click through to your Database file. Click on your Database to open the details view, and then click on the Activity link to view the file activity. Here, you can view annotations and versions in a timeline on the right. Choose the version you’d like to restore, and then either click the Restore link or the Restore icon to the left of the version.

Choose Versions from the Activity Timeline

Choose Versions from the Activity Timeline

Select a version and click Restore

Select a version and click Restore

Once you choose Restore, you will need to confirm that you really want to restore your version.

Confirm that you want to restore a version

Confirm that you want to restore a version

Once you click Restore, your previous version of the Database will be restored and will immediately begin to sync with you CC Desktop folder. Depending on your Internet speed, it may take a while for the previous version to appear on your computer. You will get an alert from CC telling you that the file has been updated. Once you get that alert, you can safely use it to replace your corrupt Outlook Database file and get back to work.

This method has saved me hours of frustration, and while I don’t wish Outlook Database corruption on you, using this method could save you hours of frustration, too.

Share on Facebook

Launching external apps from a DPS folio

Inter-app communication is a frequent request from my DPS customers. For instance, they would like to be able to launch Mail with a message already populated, or send a tweet, or post to LinkedIn. While it could be possible to do that within a Web Content Overlay, often times it is preferable to send a request to the native application or service on the device.

iOS applications have a method to allow apps to talk to each other called a Custom URL Scheme. Not all apps make use of this feature, though; it is up to the developer to implement it properly. This method is documented at Apple’s Developer Connection, and I have an article in the Adobe Developer Connection that uses the Custom URL Scheme method to navigate within a DPS folio using JavaScript and HTML. This article will discuss communicating with external apps via the Custom URL Scheme.

Some Custom URL Schemes are well understood and have been part of the HTML consciousness for a long time.

mailto:

and

tel:

are used frequently to send emails and dial a telephone, for instance. I have an article in this blog that talks about using the mailto: Custom URL scheme. How, then, can we use similar methods to communicate with other apps? First, we need to determine the Custom URL Scheme that is registered to an app. Some apps make their Custom URL Schemes well known, like Google Maps. Others do not. You can search for apps and get some help with how to craft a URL at Magnatron’s handleOpenURL site. Searching that site for Twitter, for instance, I can see that the native Twitter app uses the “twitter:” scheme and some directives to start the Twitter app and have it so something. Here are some of the commands:

twitter://user?screen_name=jameslockman
twitter://timeline
twitter://mentions
twitter://messages
twitter://list?screen_name=jameslockman&slug=abcd
twitter://post?message=hello%20world

It’s clear that if we know how to properly phrase our request, then we can easily create integrations between DPS apps and other native apps. Armed with the Custom URL Scheme, I decided to try to use it for a specific use case.

I had a request from a customer who needs to launch a Connect meeting on their iPad from a DPS application. The customer wants to provide eLearning content in DPS for offline use, and then provide a button in the DPS folio that will launch Connect Mobile and pre-populate the meeting room information.

I asked around internally, and the Connect Mobile folks were kind enough to provide me with the following Custom URL Scheme for Connect Mobile:

connectpro://https://connect.server.address/connect.room.path

OK, I thought, I’ll just make a button in InDesign and set it to go to the URL. Unfortunately, when I tap the button, the colon (“:”) after “https” didn’t pass over to Connect Mobile, so the URL got passed as

https//connect.server.address/connect.room.path

In addition, DPS launched an empty Web Overlay so that when I returned to the folio, I had to tap the “Done” button to close the overlay. Not very elegant, and not exactly what I was looking to accomplish.

After some back and forth with a few people on the Connect side (Props to David Knight, Vincent Le Quang and Minh Huynh for taking time out of their busy days to help diagnose the issue) and a lot of trying and failing with variations on escaping the colon character, it dawned on me that the solution was easy and should have been obvious.

When we create a button or hyperlink in InDesign, that button’s or hyperlink’s URL target gets passed out of the folio and to the Content Viewer, which then passes it on to iOS. This is two steps, and the special character was getting decoded and then left behind, which makes sense. The answer is to use a Web Content Overlay, which provided only one step to iOS as it is a native iOS Webkit Overlay.

I made an HTML snippet, escaped the problematic colon character with %3A, and inserted the HTML (Object>Insert>HTML) into my folio:

<a href="connectpro://https%3A//connect.server.address/connect.room.path">tap here to go to the meeting (%3A escaped)</a>

InDesign recognized the inserted HTML as a Web Content Overlay, so all that’s left to do is to set the Web Content overlay to auto play. Now, when I tap the link in DPS, my Connect Mobile app launches, the meeting URL is filled in, and all I need to do is tap Next to log in to the room. Once the session is running, I can use the 4 fingered swipe to switch back and forth between the DPS app and Connect. Pretty neat!

In most cases, you should be able to use Custom URL Schemes on buttons and hyperlinks directly from InDesign. However, you may need to put that URL into a Web Content overlay in order to allow special characters to pass out to iOS, and ultimately to your external app. Of course, it is possible to use JavaScript to dynamically compose a Custom URL Scheme request, so expect some more interesting examples from me in the future.

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

Nested Overlay conundrum and solution for DPS

One of my customers’ favorite aspects of Adobe’s Digital Publishing Suite is how new features appear every 6 weeks or so. This rapid pace of development means that the DPS team can respond to customer requests for new functions in the Overlay Creator and the Folio Producer parts of the solution. One of the recent changes was the addition of what are known as Nested Overlays.

Nested Overlays allow you to combine multiple overlays into one object. For instance, you can now include a buttons, videos or a Pan and Zoom Overlay in your slide show. This is very handy when trying to create an interactive slide show like you see on popular news sites: there’s a photo with some text under it and six dots along the bottom, and when you touch a dot or swipe across the image, it takes you to the image or video that’s in the slide show.

I have heard from customers that while this seems to work on the desktop Content Viewer, it often fails on the iPad. I was surprised, so I did some investigating and here’s what I learned.

When you build a slide show, you need to create a Multi-State Object, or MSO. This MSO is a container for all of the different slides you want to present, with each state in the MSO representing a slide. Inside of each state, you can include DPS overlays. In my example, I have three slides in my slide show, so I have three states in my MSO. On the second slide, I have a Pan and Zoom Overlay, because the text is too big to fit in the space I’ve allowed. When I preview on the desktop, this works as expected. When I preview on the iPad, however, it doesn’t work.

The solution is easy, and I came upon it after following some of my own advice. When I first began teaching about interactive features in InDesign CS5, I exhorted my students to “think like a developer!” This meant that they needed to start naming their design elements if they wanted to have a productive relationship with the Flash developer who would take their comps/projects and turn them into full-fledged apps. This reduced guesswork and established a workflow that fostered collaboration between the two. Until InDesign CS5, designers all worked in Photoshop and sent layered PSDs with layer comps and written instructions to the developers, who chopped them up and added interactivity. This Photoshop-centric is still prevalent today, and it is fraught with errors in communication. I promote the idea of using InDesign as an interactive comping tool, however, and make judicious use of the layers panel to name my design elements. The key here is how InDesign names objects when you don’t.

By default, InDesign names all of its objects with the name of the primitive surrounded by brackets, like <rectangle> or <graphic frame>. If you place a graphic, the name becomes <nameofthisgraphic.psd> or whatever the graphic’s file name is. If you type some text, the first few words of the text frame become the name of the object, plus those surrounding brackets. It turns out that these names look suspiciously like HTML tags, but as tags, they have no meaning. I think (and I expect to get either some dope slaps or back slaps for this) that the webkit part of the iPad Content Viewer gets confused when it sees these names in the nested overlays. If you change the name of the overlay from InDesign’s default to something without brackets, your overlay will work as you expect.

In my example, I drew a box and pasted my text into it in order to make the Pan and Zoom overlay. InDesign named the box <graphic frame>. We can see this in the Layers panel. One of the great features of the Layers Panel is that we can use it not only to reorder the objects within a layer, but we can also use it to change the names of the objects. When I change the name to More Than Professors and update my folio, my overlay works as expected. It is not necessary to adhere to a strict Action Script naming convention, which would have a name like moreThanProfessors. The Content Viewer doesn’t seem to be bothered by spaces in the name, but if you’re going to be working with a Flash developer, then you should consider talking with them about how they want objects to be named.

On the left, the result with InDesign's default name. On the right, the result with my custom name.

Changing times require changing workflows. For interactive design and DPS specifically, it is time for designers and developers to share best practices. While naming conventions have never been a concern of a print designer, they are critical for a developer. In InDesign, these two worlds collide, and the collaborative workflow I have been preaching for the last two years is now paying off.

Share on Facebook