Posts tagged "Collaboration"

Agency workflows for Enterprise DPS customers

I often encounter questions about how Agencies and their Enterprise customers should collaborate on DPS projects. While not hard to do, there are definitely nuances to how Agencies and Enterprises interact when it comes to building apps in general, and DPS apps in particular. I’d like to outline a few scenarios and provide some best practices along the way.

First, let’s set a few expectations. There are cases when the Agency is doing all of the work for their Enterprise customer, and this will include the Agency owning the Apple Developer account, the Adobe DPS account, and all of the creative. This article is not intended to shed any light on that scenario. Instead, we’ll look at the following cases:

  • The Enterprise owns the Apple Developer Account and the DPS Account but the Agency supplies the creative
  • The Enterprise owns the Apple Developer Account and the Agency owns the DPS Account and supplies the creative
  • The Enterprise owns the DPS account and the Agency owns the Apple Developer Account and the creative

Enterprise owns it all

This scenario is very common for DPS customers who build internal apps for Enterprise distribution through Mobile Device Management (MDM) solutions. It also applies for brands who build branded customer-facing apps that they distribute using app marketplaces such as iTunes. Public apps will not only bear the Enterprise brand, but they will also appear as being published by the Enterprise.

In this case, the Enterprise has several options when it comes to using the creative content that the Agency will supply. The preferred workflow is for the Enterprise to extend an AdobeID to its Agency or Agencies that can be used by the Agency when they are making folios for the Enterprise. Typically, the AdobeID might be related to a brand or a project, and would not be specific to the Agency. For instance, if ABC company had XYZ brand, and Agency Q was providing creative for their DPS projects, then ABC might make an AdobeID called XYZ_DPS_agency@ABCCompany.com. The alternative is for the Agency to use its own AdobeIDs for content creation, and then they would share the folios with XYZ_DPS@ABCCompany.com for publishing to DPS. In either scenario, the Enterprise controls whether to publish the folios to its app.

In the case of the app, if there is a custom Library or Storefront, then the Agency can provide the code to the Enterprise as a .zip archive, which the Enterprise will include in App Builder when they make their app. The Enterprise, usually through their IT department, will control the Apple Developer certificates and mobileprovision files, and the Enterprise will also not need to share access to iTunes Connect or their Enterprise Mobile Device Management (MDM) portal. As a result, the Agency will provide the look and feel of the app, but IT will do the actual building. An alternative to this scenario would be that the Enterprise creates an AdobeID with the App Builder role and shares it with the Agency. The Agency can then create an app and sign it with their own Apple certificate and mobileprovision file. This allows the Agency to test the full functionality of the app without being able to publish an app on behalf of the Enterprise, since they would not have access to the Enterprise’s Apple Developer account. When the app had cleared review, the Enterprise would then log in to the App Builder with the same or another AdobeID with App Builder role and update the app with the Enterprise’s Apple certificates and mobileprovision files.

Enterprise has the Apple Developer relationship and the Agency has the DPS account

This arrangement is common for Enterprises who make apps but are unfamiliar with DPS or are interested in testing some apps as part of an evaluation. Also, it is common for a digital Agency who makes apps on behalf of their customers to use DPS to meet a specific campaign need for their client when speed market and a rich user experience is important. Any apps published under this arrangement will have the Enterprise branding and will appear to be published by the Enterprise in app marketplaces. The Agency would need a specific DPS license in order to use their DPS account for publishing on behalf of their client, so the Agency should contact their DPS Account Executive to determine if they have a license that supports this scenario.

In this case, the Agency will be making all of the content using their Adobe DPS account. They would use their own AdobeID which is associated with their Adobe DPS account for content, and their own AdobeID for accessing App Builder. The Agency would share folios with an AdobeID that the Enterprise controlled so that the Enterprise could review content using Adobe Content Viewer. The Agency would test the app using their own Apple Developer certificates and mobileprovision files, and then bring a device to the Enterprise or enroll an Enterprise device in their Apple Developer pool so that they could send developer apps to the Enterprise for testing.Once approved, the Enterprise would need to sign the app with their own Apple Developer certificates and mobileprovision, and then distribute it via Enterprise MDM or iTunes.

There are three app building methods that have been most widely used. The first is for the Enterprise to create a set of .p12 certificates and mobileprovision files for the app and transmit them to the Agency for use in App Builder, and it is the lesser of the methods that Enterprises use today. The next, more popular method, is for the Agency to provide App Builder access to the Enterprise through an Agency AdobeID they build for the Enterprise. Following our previous example, the Agency would make an AdobeID called XYZ_DPS_appbuilder@Q.com and share the password with the Enterprise. The Enterprise IT department would then use App Builder to sign the app with their own Apple Developer certificates and mobileprovision files, and ultimately distribute using iTunes or MDM. The third method, and most popular, is for the Agency to create an app using their own Apple Developer certificates and mobileprovision files, and then the Enterprise would simple re-sign the app with their own Apple Developer certificates and mobileprovision files.

Enterprise has the DPS Account and the Agency owns the Apple Developer relationship

This is a scenario used by many Enterprise customers who want to make branded apps for distribution through iTunes. They often want to do market testing or produce short-lived campaign pieces they need to get to market very quickly. In this model, the Enterprise would own the DPS account, but they would likely be using the Agency for creative. In the same manner as our first scenario, the Enterprise would either make and share an AdobeID with the Agency, or the Agency would create content using their own DPS account and share it with the Enterprise. Review and approval would be like the first scenario as well. Things get different in the App Builder stage.

Since the Agency has the Apple Developer relationship, only the Agency will be able to build apps unless they create and share Apple Developer certificates and mobileprovision files with the Enterprise. They would also need to enroll an Enterprise device in their Apple Developer pool to enable developer apps to be reviewed at the Enterprise. If they are unwilling to share certificates and mobileprovision files with the Enterprise, then they will need to enroll an Enterprise device in their developer pool so that they can send a developer app to the Enterprise for review. Once approved, the Agency would then publish the app under their own account using iTunes Connect. This is the same end result as when the Agency owns the DPS account and the Apple Developer relationship, which we did not discuss in detail here.

No matter how you slice it, it comes up DPS!

Each of these three scenarios has its nuances, and business rules will decide which scenario is appropriate for a specific Enterprise/Agency relationship. Regardless of how the Enterprise and the Agency collaborate, it is possible to use DPS to make apps and to get them to the appropriate distribution channel.

Share on Facebook

A new and simplified Notetaking solution for DPS

Many of my DPS customers want to incorporate note taking into their DPS apps. Over the years, there have been several examples posted to DevNet, including one by me back in 2013. One of the challenges with that solution was that it requires the designer to make multiple copies of the underlying HTML file in order to support placing the note taking overlay on more than one page in an article. I have gone back and revised that code to make it work with a single HTML file that supports any number of pages in an article. You can read about the new technique here.

The new system has CSS styling to help match it to your brand. In addition, I’ve added a button to email a specific note as well as the whole set of notes. I’ve also been working on extending the system to include thumbnail images of the specific pages in the email. I’ve got a little more work to do on that before I’m ready to share it, but keep your eyes here (and on DevNet) for a follow-up article about embedding images in email messages from DPS.

Share on Facebook

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