Calendar Parser Utility for the 3rd-party BlackBerry 'Ultimate Backup' app


Last time I mentioned that I migrated to a BlackBerry Classic from a Q10 device. Most things migrated over pretty easily. The hard part revolved around the calendar entries that I had made since upgrading my Q10 to a leaked 10.3.1 build. I didn't feel comfortable restoring settings from a 'leak' build to my new Classic so I used an older officially supported backup that I had taken a few weeks earlier.

I thought my calendar problems were solved when I found the Ultimate Backup for BlackBerry 10 app in AppWorld. With some effort I was able to backup all my calendar items. Unfortunately I could not find a way to selectively backup or restore calendar items from a certain date and ended up with an archive of over 16,000 events.

To get around having 15900 duplicate calendar entries, I created a utility in C#.NET to let me filter the calendar export down to just those items that I cared about. I'm releasing that utility here free of charge under an Apache 2.0 license for anyone interested in examining the code.

At some point I'll get around to setting up a codeplex or github page. For now I can offer zip files with source code. Scroll to the end of the article after the jump to find the download locations.

===

Last time I mentioned that I migrated to a BlackBerry Classic from a Q10 device. Most things migrated over pretty easily. The hard part revolved around the calendar entries that I had made since upgrading my Q10 to a leaked 10.3.1 build. I didn't feel comfortable restoring settings from a 'leak' build to my new Classic so I used an older officially supported backup that I had taken a few weeks earlier.

I thought my calendar problems were solved when I found the Ultimate Backup for BlackBerry 10 app in AppWorld. With some effort I was able to backup all my calendar items. Unfortunately I could not find a way to selectively backup or restore calendar items from a certain date and ended up with an archive of over 16,000 events.

To get around having 15900 duplicate calendar entries, I created a utility in C#.NET to let me filter the calendar export down to just those items that I cared about. I'm releasing that utility here free of charge under an Apache 2.0 license for anyone interested in examining the code.

At some point I'll get around to setting up a codeplex or github page. For now I can offer zip files with source code. Scroll to the end of the article after the jump to find the download locations.

About the tool

The BB Ultimate Calendar Backup Parser is designed to give you greater control over the data that you export and import using the 3rd-party Ultimate Backup for BlackBerry 10 app found in BB AppWorld. With my utility you will be able to take a zip-file backup generated by the app and filter it for calendar entries you actually want to keep. It is not a free app, though it is on sale at a discounted price at the time of this writing.

I created this tool when I noticed that the 'Ultimate Backup' app would not let me select which entries to backup and restore. I needed options. :)

Note: I am in no way affiliated with Runisoft, creators of the Backup app.

 

License

This tool is licensed under the Apache 2.0 license. You are free to alter, use and/or redistribute the binary and soruce code under those terms. Go wild! :)

 

System Requirements

This tool is written in C#.NET and requires:

  • Microsoft .NET 4.0 (Supported on Windows XP and higher)
  • About 325KB Hard Drive space to store the EXE and its dependencies
  • A few Megabytes of RAM to run it

 

How do I use this?

Here are the high-level steps for using this tool (more details below). There are a lot of steps, but it should work:

  1. Install the 3rd-party Ultimate Backup for BlackBerry 10 app to your BB10 device
  2. Save your calendar data to your device memory or SD card
  3. Copy the calendar backup file to your computer
  4. Run the BB Ultimate Calendar Backup Parser (the utility found on this page) on your PC
  5. Copy the resulting zip file to the BlackBerry device you want to import the calendar data to
  6. Run the Ultimate Backup app and import the data

 

Install & use the 3rd-party backup app

You can find the backup app in BB AppWorld Here. Remember, I did not write this app and am not responsible for it. If you run into problems, contact the author and let them know.

For reference, when I was using the app yesterday it had this annoying habit of defaulting to the device memory even though I had specifically selected the SD Card to save the backups.

You might see a few screens asking you for an email address and to setup the default backup location (please don't use the email option, though). Fill those out being sure to select a mechanism that will help you get the backup zip file to your PC.

Exporting the calendar items took a few hours on my Q10. It might be a good idea to leave your phone plugged in while the calendar items are being saved.

 

Copy the zip archive to your PC

If you use BlackBerry Link, you can copy the zip file created by the backup app to your PC using Windows Explorer. You might be able to use Box.NET, DropBox or some other mechanism to get the data to your PC.

Note: I *strongly* suggest not using the email option to get the data to your PC as the backup files are unencrypted and could be intercepted during transit.

 

Using the Utility

Now for the fun part: using the utility! While I tried to make things as straight-forward as possible, I'm no UX Designer. :)

 

Open the EXE

As displayed in this image, run BBUltimateBackupParser.exe

FileListing.png

 

You'll see a screen that looks like this:

BBUltimateBackupCalendarParser-MainScreen.png

 

Set the Input and Output files

  • Press the Select File button next to the Path to Input Zip field and browse to the backup file generated by the 'Ultimate Backup' 3rd-party app.
  • Next, click on the Select File button next to the Output zip file field and select where you'd like the filtered calendar archive to go

BBUltimateBackupCalendarParser-SelectedInputOutputFiles.png

Note: I have to prepend 'Calendar_' to the file name or the mobile app won't recognize the file name when you try to import

 

Configure your Filters

Now for the good stuff: You can filter the exported calendar items for events you care about. There are a few types of filters you can apply:

  • Date range filters
    • On or before a certain date
    • On or after a specified date
    • Date range
       
  • Calendar Item Subject
    • Subject contains a word or phrase
    • Subject line is an exact string
       
  • Calendar Item Description
    • Description contains a word or phrase
    • Description is a string
       
  • Case sensitivity: Defaults to 'off', but you can enable it if you want

 

Here is an example of me filtering a backup file to a Date Range as well as looking for calendar events that have particular subject lines or Descriptions:

BBUltimateBackupCalendarParser-FiltersSelected.png

 

How do I Add or Remove filters?

Before we can run the tool, you need to enter the filters you want to apply.

To configure a filter, select the Filter Type from the drop-down menu, then enter a Filter Value and press the Add Filter button:

BBUltimateBackupCalendarParser-AddFilterArea.png

 

If you want to remove a filter, right-click on it and select either Modify or Delete

BBUltimateBackupCalendarParser-ModifyOrRemoveFilter.png

  • Modify returns the entry to the Filter type/value boxes and lets you edit it before adding it to the list
  • Delete removes the entry permanently with no way to undo.

 

Filter the calender events

Now that we're done with configuration, you can click the Go button. If it works, you'll see a message box pop up and indicate success like this:

BBUltimateBackupCalendarParser-SuccessMessage.png

 

Technical Details

When the 3rd-party backup application creates its zip archive it creates html, vcalendar, csv and calbkp versions of your calendar data. After some investigation, it appears that the proprietary calbkp file is what is used during a restore. This is a pipe-delimited text file with LineFeed separated rows, each row representing a single calendar entry.

My utility parses the calbkp file and generates a new one in the same format which (at the time of this writing) is compatible with the import functionality of the backup app.

 

Download

Note: I'm not sure how antivirus likes debug-built code. Feel free to examine and build the source in Visual Studio if you wan't to poke around. :)

Let me know if the tool works for you.