<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8542532489456200473</id><updated>2011-12-08T22:20:52.804-08:00</updated><category term='Policy'/><category term='GPS'/><category term='automatic'/><category term='timezone'/><category term='blackberry'/><title type='text'>BlackBerry Enterprise Server on Domino Discussion</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-8099564833656395601</id><published>2009-03-06T06:18:00.000-08:00</published><updated>2009-03-06T06:20:23.618-08:00</updated><title type='text'>Moving On...</title><content type='html'>Well today is my last day working on Domino systems, so I guess it is the last day for this blog as well.  I have had fun probing the inner workings of Domino as it relates to BES, however all good things must come to an end, and I will soon be going back to the dark side.  Adieu!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-8099564833656395601?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/8099564833656395601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=8099564833656395601' title='41 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8099564833656395601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8099564833656395601'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2009/03/moving-on.html' title='Moving On...'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>41</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-1404733507672826013</id><published>2009-01-08T13:22:00.000-08:00</published><updated>2009-01-08T13:38:33.234-08:00</updated><title type='text'>Software Configuration Push Problems Wrapup</title><content type='html'>Well here is the upshot of pushing an application to ~1500 Blackberrys:  About 50 of them will not receive the app for a variety of reasons.  (Which is actually not too bad considering the complexity and fragility of all the pieces involved in a wireless software deployment!)&lt;br /&gt;&lt;br /&gt;First, check the Last Contact Time for the user's BES account.  I have about 8 of these guys who haven't been heard from in weeks or months, they are probably on maternity / paternity leave or have been fired but not deleted from the BES.  Ignore these guys for now.&lt;br /&gt;&lt;br /&gt;Second, ensure there is enough memory on the device via the BES Manager.  If the device reports 1MB free then it probably won't install the app.  If the last date status was reported is way in the past, the device probably doesn't have enough memory to even report daily status anymore.&lt;br /&gt;&lt;br /&gt;Then, check that the device's Hardware information is reported in the BES Manager.  Some devices only have there "Secured Boot ROM" entry there, which means the hardware is not reporting correctly, and is reporting a hardware ID of 0x00000000.  The BES doesn't see this number in the device.xml and won't push the app to it.  This happens alot with Verizon devices, especially the 8300 models, but I have seen a few with T-Mobile 8700's as well.  In this case the only thing I have discovered that fixes it is to upgrade to a later OS, such as 4.5.&lt;br /&gt;&lt;br /&gt;If memory is plentiful and hardware info is there (and of course your device.xml is updated), then I have found that there may be a mismatch between the Applications / Modules reported by BES Manager and what is actually on the device.  Many times the BES Manager will report multiple modules with different version numbers, but the device is actually just fine.  In this case we need to clear the BES Manager device info.  The best way to do this is to go into the PIM Sync Options of the user and set the &lt;span style="font-weight: bold;"&gt;Automatic BlackBerry Device Management Enabled&lt;/span&gt; setting to &lt;span style="font-weight: bold;"&gt;False&lt;/span&gt;, clicking OK, waiting 1 minute, then going back in and setting it to &lt;span style="font-weight: bold;"&gt;True&lt;/span&gt;.  This will clear the data from the SQL tables, and when set back to True, will request that the device repopulate the information with fresh data.  When this is done, after a few minutes, often the software push will begin to work.&lt;br /&gt;&lt;br /&gt;On some devices I set the above setting back to True and I never get back any device information!  In this case the Desktop (SYNC) service book on the device seems to be corrupted, and having the user delete it and undelete it restores everything just fine.  Then the push works.&lt;br /&gt;&lt;br /&gt;Please note that deleting the user's BES account, recreating it, wiping the device, and reactivating will most likely fix all the above issues.  However in our environment it is imperative that our attorneys have as little down time as possible, so fixing these issues behind the scenes is a lifesaver.&lt;br /&gt;&lt;br /&gt;Hope this little learning experience helps you all out there as much as it has me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-1404733507672826013?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/1404733507672826013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=1404733507672826013' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1404733507672826013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1404733507672826013'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2009/01/software-configuration-push-problems.html' title='Software Configuration Push Problems Wrapup'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-3578003861158834818</id><published>2008-12-23T07:13:00.000-08:00</published><updated>2008-12-23T07:19:48.953-08:00</updated><title type='text'>Software Configuration Push Problems cont'd...</title><content type='html'>Another issue I discovered is the following:&lt;br /&gt;&lt;br /&gt;1. I audit all of our devices to ensure the memory is above 3MB before pushing the software, to avoid causing their devices to delete all their mail.  How to do this is another post in itself!&lt;br /&gt;&lt;br /&gt;2. We send these users emails on how to clean up the device.&lt;br /&gt;&lt;br /&gt;3. I got some emails back saying they had plenty of memory free already!&lt;br /&gt;&lt;br /&gt;4. I checked and found that the Device information had not been updated in 6 months or more!  I was working with old data for some users!&lt;br /&gt;&lt;br /&gt;Here is my theory:&lt;br /&gt;&lt;br /&gt;Once you get to a very small amount of memory on the BB, the Handheld Agent will stop reporting back to the server it's details on a daily basis.  Fortunately there was an easy fix for most of these guys, and that is to set "Automatic BlackBerry Device Management Enabled" to FALSE, wait a few minutes, then set it back to true.   What this does is delete all the device information for that user from the SQL database, then when you turn it back on it refreshes it directly from the device.  If there is enough memory available you will get new info.  If memory is still low you will not get any info back.&lt;br /&gt;&lt;br /&gt;Interesting side note:  The refreshed device information will only reflect when the Handheld Agent last collected the data, not the "right now" state.  So if you get todays info it may be from 5 or 7AM, not from 11AM when you changed the settings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-3578003861158834818?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/3578003861158834818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=3578003861158834818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/3578003861158834818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/3578003861158834818'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/12/software-configuration-push-problems_23.html' title='Software Configuration Push Problems cont&apos;d...'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-1720246763498314627</id><published>2008-12-23T07:05:00.001-08:00</published><updated>2008-12-23T07:13:23.929-08:00</updated><title type='text'>Software Configuration Push Problems (SCPP's)</title><content type='html'>Ok here I am again after a long bout of laziness.  Anyway I am working on deploying a piece of software to all our devices and am running into fun issues.   Here is one of them:&lt;br /&gt;&lt;br /&gt;8330 Curves on Verizon running 4.2 or 4.3 OS, for some reason, do not publish their hardware details to the BES.  In fact they don't even publish it if you are connected over USB to the device via BlackBerry Manager.  The Hardware ID is just 0x00000000.&lt;br /&gt;&lt;br /&gt;This is a problem because when you push software it checks the device model against the device.xml file in the AppLoader directory above the actual software package.  If it doesn't find it then you get an error in the POLC log about HHCM_DEVICE_NOT_SUPPORTED and to Update your device.xml.&lt;br /&gt;&lt;br /&gt;The issue of course is not the device.xml, but that the Hardware ID is not there for this device.&lt;br /&gt;&lt;br /&gt;I found that upgrading from 4.2 or 4.3 OS to 4.5 will publish all the gory hardware details and software pushes will work again.&lt;br /&gt;&lt;br /&gt;I wonder if it is stupid Verizon wanting to hide the hardware from everyone but themselves (like they do with GPS) or just an bug in their version of OS 4.2 / 4.3.  Either way seems it is resolved in 4.5.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-1720246763498314627?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/1720246763498314627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=1720246763498314627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1720246763498314627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1720246763498314627'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/12/software-configuration-push-problems.html' title='Software Configuration Push Problems (SCPP&apos;s)'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-622882685247229194</id><published>2008-05-07T09:37:00.000-07:00</published><updated>2008-05-07T10:30:19.486-07:00</updated><title type='text'>ITAdminQueue - EXPOSED!</title><content type='html'>A pretty cool new feature appeared in 4.1 SP5, resulting in a new tab called Software Configuration Status within the BlackBerry Manager application:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/SCHdn8-vKpI/AAAAAAAAAWw/Cd784DJ_eQ0/s1600-h/SCS.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/SCHdn8-vKpI/AAAAAAAAAWw/Cd784DJ_eQ0/s400/SCS.JPG" alt="" id="BLOGGER_PHOTO_ID_5197679123416165010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This tab shows a view of the previously hidden ITAdminQueue table in the SQL database, which contains all sorts of back end commands that are queued up / in process to the BlackBerry handhelds.&lt;br /&gt;&lt;br /&gt;The view above results from setting the software configuration of my test BlackBerry to a pre-configured RSA SecurID application, turning the wireless off, and manually pushing it out via the "Deploy Software" command.  You can see there are two entries listed under this new tab, which don't show a whole lot of information.  I assume because they are simply queued, and have not errored out yet.&lt;br /&gt;&lt;br /&gt;Here are the corresponding ITAdminQueue rows in the actual SQL table:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/SCHhQM-vKrI/AAAAAAAAAXA/fR1q-DLJ-Vo/s1600-h/ITAQtable.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/SCHhQM-vKrI/AAAAAAAAAXA/fR1q-DLJ-Vo/s400/ITAQtable.JPG" alt="" id="BLOGGER_PHOTO_ID_5197683113440783026" border="0" /&gt;&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;Note that the first entry is actually listed with a Command column number of 129.  This corresponds to the BES Policy service's SEND_APC_ITPOLICY command.  The IT Policy is always sent first whenever an application is delivered, as it includes any software application policies you have created.  As these policies need to be applied before the app is installed, sometimes there are errors applying the IT policy -  which can prevent an app from being delivered successfully.&lt;br /&gt;&lt;br /&gt;Note also that this IT Policy command does not show up in the Software Configuration Status tab, which leads me to believe this tab is built using a filter to only show software application entries, not the whole table.&lt;br /&gt;&lt;br /&gt;Below this row there are two additional rows listed, both showing the Command column set to 128. 128 corresponds to the SEND_APC_APP command, so these are the commands to send the application itself.  Note that these rows in the SQL table do not have a Time Sent value, but the IT Policy does.  More proof that the app will not be sent until the IT Policy is applied successfully.&lt;br /&gt;&lt;br /&gt;One interesting thing is that the app I was pushing contained only one .cod file, so why two SEND_APC_APP commands / rows?  Looking into the Policy log we find something interesting:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Queuing the package RSA SecurID, consisting of 1 modules in 2 parts.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So I think this this one .cod module is split into 2 parts for transmission to the BlackBerry, for what reason I do not know.  Perhaps it was too big to send all at once?&lt;br /&gt;&lt;br /&gt;Although this new tab of information is helpful, I see it does not allow you to delete any queued commands.  Some software push issues have been resolved by running the following SQL script:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;osql -S [SQLServerName] -d [DBName] -U [SQLLogin] -P [SQLPassword] -Q "delete from ITAdminQueue where (command = 128 or command = 129) and status = 6"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This command will clear all SEND_APC_ITPOLICY and SEND_APC_APP entries with a status of 6, which designates an error; this allows future pushes to proceed properly.&lt;br /&gt;&lt;br /&gt;Some other BES Admins have recommended just deleting all rows referencing a particular PIN number to resolve issues with an individual BlackBerry not receiving an application properly.  I cannot vouch for this method however, as I have not used it.  I do occasionally run the SQL script above during standard maintenance of our BES environment, or if a particular application push problem occurs.&lt;br /&gt;&lt;br /&gt;From RIM's documentation, here are some error codes you might see in this new tab:&lt;br /&gt;&lt;br /&gt;   * Device timed out waiting for module&lt;br /&gt;   * Device reported insufficient memory to install module&lt;br /&gt;   * Device reported insufficient privileges to install module&lt;br /&gt;   * Device reported Invalid Version in packet, supported version is %s&lt;br /&gt;   * Device reported that there was an Incomplete Module&lt;br /&gt;   * Device reported that the Module Save Failed&lt;br /&gt;   * Device reported a general failure installing the module&lt;br /&gt;   * Incomplete ACK data for APPD request&lt;br /&gt;   * Device reported a %s error while installing module&lt;br /&gt;   * Device Reported Data Format Error in packet while installing module&lt;br /&gt;   * Device Reported Invalid Command while installing module&lt;br /&gt;   * Device Reported Insufficient Body Data while installing module&lt;br /&gt;   * Device Reported Invalid Module Hash while installing module&lt;br /&gt;   * Device Reported Invalid App Data Length while installing module&lt;br /&gt;   * Device Reported Insufficient App Data while installing module&lt;br /&gt;&lt;br /&gt;You can check out the support article, KB15470, for more information on these messages and there resolutions.&lt;br /&gt;&lt;br /&gt;I am sure that this new tab will help in resolving future application push issues, however I am also sure that some manual cleaning of the ITAdminQueue table will still be needed occasionally as well!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-622882685247229194?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/622882685247229194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=622882685247229194' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/622882685247229194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/622882685247229194'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/05/itadminqueue-exposed.html' title='ITAdminQueue - EXPOSED!'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qhSyRnKgVC8/SCHdn8-vKpI/AAAAAAAAAWw/Cd784DJ_eQ0/s72-c/SCS.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-584505897522097689</id><published>2008-05-06T11:01:00.001-07:00</published><updated>2008-05-06T11:05:28.420-07:00</updated><title type='text'>Heading to WES 2008</title><content type='html'>Well I know some of you who read this blog will be at WES this year, looking forward to meeting all of you in addition to the great bunch of BES Admin folks that convened last year.&lt;br /&gt;&lt;br /&gt;Generally our meeting place was in the right rear of the solutions showcase but we may also be hanging out around the BoxTone lounge, check out the WES 2008 thread on www.blackberryforums.com BES Admin corner for the latest details...&lt;br /&gt;&lt;br /&gt;Hoping to see you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-584505897522097689?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/584505897522097689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=584505897522097689' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/584505897522097689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/584505897522097689'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/05/heading-to-wes-2008.html' title='Heading to WES 2008'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-7485521950005725174</id><published>2008-05-05T11:57:00.000-07:00</published><updated>2008-05-05T12:12:36.475-07:00</updated><title type='text'>Address Book Contact Labels and the BlackBerry</title><content type='html'>Had an interesting issue crop up today with an end user who changed the contact labels associated with an address book entry.  Here is the default when you click the Edit Contact Labels button within your address book entry form:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/SB9ZLl0KhLI/AAAAAAAAAWg/DuYJ0kA4aqI/s1600-h/Labels.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/SB9ZLl0KhLI/AAAAAAAAAWg/DuYJ0kA4aqI/s400/Labels.JPG" alt="" id="BLOGGER_PHOTO_ID_5196970550673179826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This person had modified the labels to reflect different information, for example changing the Pager label to Home Phone #2.  The problem is that the label change does not sync over to the BlackBerry, which shows the Label still listed under Pager.&lt;br /&gt;&lt;br /&gt;I called RIM and verified this is the way it should work, as the underlying field name does not change, and RIM maps to the field name, and not the changeable display name.&lt;br /&gt;&lt;br /&gt;I understand the issue and agree with RIM's assessment, however this is one of those gray areas where it is difficult to determine who is responsible for the issue.  Is it Lotus for providing the (perhaps unwise) ability to change display names to something that is completely different from what the underlying field name reflects?  Or is it RIM for not supporting this Lotus Notes feature, even though it may not be the best of features to have from a data integrity standpoint.&lt;br /&gt;&lt;br /&gt;As is generally the case, it is perhaps a little of both, which is why these things tend not to get fixed as each side points to the other and neither will take the responsibility to address it.&lt;br /&gt;&lt;br /&gt;This is not that big of a deal to me, and personally I agree with RIM's assessment that their sync engine should map to the field name and not a nebulous display name that can be changed at will by the end user.&lt;br /&gt;&lt;br /&gt;However, this is just a small example of the types of conflicts that can happen when you have two separate software entities interacting with each other, creating a no-man's land of responsibility with the customer trapped in the middle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-7485521950005725174?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/7485521950005725174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=7485521950005725174' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/7485521950005725174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/7485521950005725174'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/05/address-book-contact-labels-and.html' title='Address Book Contact Labels and the BlackBerry'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qhSyRnKgVC8/SB9ZLl0KhLI/AAAAAAAAAWg/DuYJ0kA4aqI/s72-c/Labels.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-8026279501211603041</id><published>2008-03-28T07:04:00.000-07:00</published><updated>2008-03-28T07:22:35.049-07:00</updated><title type='text'>IT Policy Removal Options</title><content type='html'>For security reasons, the IT Policy assigned to a device cannot be removed, even if the device is wiped. It is like a permanent tattoo.  Like tattoos, however, they can be removed with a long and painful procedure.  At least that is the way it used to be, nowadays we have more options.  Let's go over them.&lt;br /&gt;&lt;br /&gt;1) Wipe the device.  Although the IT policy still exists on the device, the wipe process opens a "window" where an activation against another corporate BES server can overwrite the IT Policy with the new one.  So for moves between organizations, you can only replace one policy with another, you cannot overwrite.  For people who purchase previously corporate BlackBerry's on EBay for personal use this has been quite a hassle, as they are stuck with the old corporate policy which may be locked down significantly.&lt;br /&gt;&lt;br /&gt;Which leads to...&lt;br /&gt;&lt;br /&gt;2) Use the policy.bin file to clear the policy.  This is a long and messy procedure (which I will not get into here) which &lt;span style="font-style: italic;"&gt;mostly &lt;/span&gt;gets rid of the old policy, using the pre 4.0 method of a policy.bin file and Desktop Manager.  I don't like this method because of the time it takes, and the lack of being in a known consistent state at the end.  It is not really "just like new" when this is done, but can be enough for most people.&lt;br /&gt;&lt;br /&gt;3) This is a new one.  With a device OS later than 4.2.2, you can use the "Remote Wipe Reset to Factory Defaults" procedure documented in an older post here:&lt;br /&gt;&lt;br /&gt;http://besdomino.blogspot.com/2007/10/remove-it-policy-new-feature-of-41-sp4.html&lt;br /&gt;&lt;br /&gt;4) This is also a new method, which does not require an IT Policy assignment or a BES server at all, just the Javaloader utility in the RIM developer tools download.  Note that an OS of 4.3.0 or higher is required, and the Javaloader utility itself must be the latest version.&lt;br /&gt;&lt;br /&gt;Strangely, the utility does not list version numbers, so you just have to look for the available option:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;font-size:85%;" &gt;  resettofactory&lt;br /&gt;    Reset IT policy to factory settings&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;...when you run the executable without parameters to see if it supports it.  If it does, then this command will wipe the IT Policy right off, and set it back to default:&lt;br /&gt;&lt;br /&gt;c:\javaloader -u resettofactory&lt;br /&gt;&lt;br /&gt;The future of IT policy removal is a bright one, indeed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-8026279501211603041?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/8026279501211603041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=8026279501211603041' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8026279501211603041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8026279501211603041'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/03/it-policy-removal-options.html' title='IT Policy Removal Options'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-2973131082284159030</id><published>2008-03-21T12:55:00.000-07:00</published><updated>2008-03-21T13:10:56.888-07:00</updated><title type='text'>Multiple BlackBerrys per Mailfile?</title><content type='html'>Answer:  Yes with some caveats.&lt;br /&gt;&lt;br /&gt;First, you need to have fully separate BES environments, i.e. at least 2 SQL back end databases.  This is easy for us as we have an EU BES environment on it's own SQL database.&lt;br /&gt;&lt;br /&gt;If we need to set up an additional handheld for an end user, whether they need it temporarily for an assistant, or need to test a new device, then we add their account to the other BES environment and activate their device as normal.  Since BlackBerrys are international devices there is no problem getting back to the device here in the U.S to finish activation.&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;&lt;br /&gt;1) BlackBerry activation can take considerably longer due to the WAN if you are using another continents environment like we are.  Don't freak out if it takes a few hours.&lt;br /&gt;&lt;br /&gt;2) If you are doing OTA activation, temporarily disable the original BES account as it might pick up the activation email and discard it, leaving your remote BES server waiting forever.  [BES servers are selfish and will NOC-block you if you let them.  :)]&lt;br /&gt;&lt;br /&gt;3) If these requests becomes common, you might want to think about a secondary local BES environment, perhaps running with an integrated MSDE, to support this service.  Of course you need an additional SRP to do this.&lt;br /&gt;&lt;br /&gt;4) Remember that these accounts cannot be failed/moved over to other local BES servers in a DR scenario, as they are on a separate database.&lt;br /&gt;&lt;br /&gt;5) Don't forget about these "ex-pat" accounts if on a foreign BES server.  The local admins may not ever delete them b/c they don't know who they are.  So you should keep track of them and delete them when it looks like the service was cancelled or otherwise abandoned.&lt;br /&gt;&lt;br /&gt;Other than these caveats, I have not seen any issues with this in our environment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-2973131082284159030?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/2973131082284159030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=2973131082284159030' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2973131082284159030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2973131082284159030'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/03/multiple-blackberrys-per-mailfile.html' title='Multiple BlackBerrys per Mailfile?'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-4461002449329166351</id><published>2008-02-11T09:52:00.000-08:00</published><updated>2008-02-13T09:11:13.473-08:00</updated><title type='text'>Managing the BlackBerry Device Firewall Remotely... Possible?</title><content type='html'>Over the past few weeks as I was playing with setting device options remotely, I made a few mental notes when encountering databases (i.e. configurations) backed up to the SQL db.  One of these was 'Firewall Options'.&lt;br /&gt;&lt;br /&gt;I particularly noted this one because I have been looking for a solution to the firewall popups that appear on our user's devices.  Overall of course the firewall is a good thing, but I like to keep the experience of our users seamless whenever possible, and incomprehensible (to the user) firewall popups do not make for a seamless experience.&lt;br /&gt;&lt;br /&gt;One example of this is the RSA SecurID software for our BlackBerry devices, which we deploy so our users do not need to carry around a hardware token.  The first thing this software does when installed on the device is listen for a software token which is wirelessly pushed to the device via a separate app.&lt;br /&gt;&lt;br /&gt;This listening process constitutes a 'server' on the device, so upon installation we see the following firewall popup:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/R7COPKgAYwI/AAAAAAAAATw/BFe_xmUIwz4/s1600-h/SecurID.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/R7COPKgAYwI/AAAAAAAAATw/BFe_xmUIwz4/s400/SecurID.JPG" alt="" id="BLOGGER_PHOTO_ID_5165785163761738498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now if I am pushing this software from the server to a device out in the field, then based on this screen the end user will be confused as to what to do.  80% of the time they may choose correctly and scroll down to click allow, but that other 20% may result in a support call.&lt;br /&gt;&lt;br /&gt;So is it possible to:&lt;br /&gt;&lt;br /&gt;1) Set the 'Allow' rule in the device's 'Firewall Settings' database in SQL&lt;br /&gt;2) Push the 'Firewall Settings' configuration down to the device&lt;br /&gt;3) Push the application and have it immediately begin listening for a token without user input?&lt;br /&gt;&lt;br /&gt;Let's find out!&lt;br /&gt;&lt;br /&gt;First we will monitor the SYNC log again to see if anything gets backed up to the server when an option on this firewall prompt is selected.&lt;br /&gt;&lt;br /&gt;The first thing I notice is that if I leave the "Don't ask this again for:" box unchecked, then nothing happens... I see no log entries on the server side.  If I reset the app and enable the listener again, this time choosing to check the box, however:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/R7Cqd6gAYyI/AAAAAAAAAUA/Zp7S6A7ekEw/s1600-h/checked.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/R7Cqd6gAYyI/AAAAAAAAAUA/Zp7S6A7ekEw/s400/checked.JPG" alt="" id="BLOGGER_PHOTO_ID_5165816203490386722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;... voila!  I do see something coming through to the server:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;[60000] (02/11 11:50:51.111):{0x1710} [ODBCRecord::DoSetValue] DATA = "DbVersion[0] Data[0x270000010107536563757249440001046874747000020000000005000004000003000002000001000000] UserConfigID[17] DatabaseName[Firewall Options] UID[1] ".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This tells me that my hunch was correct, and that any saved settings are stored in the 'Firewall Options' configuration, and therefore backed up to the server.  Good news!&lt;br /&gt;&lt;br /&gt;So let's now reset everything and query the 'Firewall Options' configuration to see the default value as compared to the updated settings:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;0x1100000005000004000003000002000001000000  (Default)&lt;br /&gt;0x270000010107536563757249440001046874747000020000000005000004000003000002000001000000 (RSA Allowed)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It looks like the first numbers were changed from 11 to 27, then a bunch of numbers were inserted, extending the configuration string.  I am guessing that this new set of numbers uniquely identifies the SecurID server application and the 'Allow' setting I chose.&lt;br /&gt;&lt;br /&gt;If we reset the app, then choose 'Deny' here is what the string becomes:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;0x270000010107536563757249440001046874747000060000000005000004000003000002000001000000&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Everything is the same except for a single number, the '2' about 2/3 of the way through the string has changed to a '6'.  So perhaps a '2' means allow, and a '6' means deny.   Let's try clearing everything out, and then pushing the 'allow' string to the device before the software push:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;use BESConfig&lt;br /&gt;UPDATE SyncBackupRestore SET Data=0x270000010107536563757249440001046874747000020000000005000004000003000002000001000000 WHERE UserConfigID = 17 AND DatabaseName = 'Firewall Options'&lt;br /&gt;UPDATE SyncConfig set SyncType=1 WHERE UserConfigId = 17 AND SyncDataSourceId=11109&lt;br /&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now we reload the application, and...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R7CpSagAYxI/AAAAAAAAAT4/wvXW11kOLGg/s1600-h/bummer.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R7CpSagAYxI/AAAAAAAAAT4/wvXW11kOLGg/s400/bummer.JPG" alt="" id="BLOGGER_PHOTO_ID_5165814906410263314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Bummer.&lt;br /&gt;&lt;br /&gt;Guess I'll have to keep digging on this one...&lt;br /&gt;&lt;br /&gt;[Update 2/13/08]&lt;br /&gt;I have been gently reminded of the use of application control policies by a fellow blackberryforums.com member, ACJones.  By setting a policy on the software configuration for the RSA SecurID software, and modifying the 'Internal Network Connections' option from 'Prompt' to 'Allow', you can avoid the initial firewall prompt completely upon OTA installation!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R7MkVqgAYzI/AAAAAAAAAUI/G5G54md0yBM/s1600-h/apppolicy.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R7MkVqgAYzI/AAAAAAAAAUI/G5G54md0yBM/s400/apppolicy.JPG" alt="" id="BLOGGER_PHOTO_ID_5166513152128475954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have tested this and it works flawlessly.  Thanks AC!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-4461002449329166351?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/4461002449329166351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=4461002449329166351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/4461002449329166351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/4461002449329166351'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/02/managing-blackberry-device-firewall.html' title='Managing the BlackBerry Device Firewall Remotely... Possible?'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qhSyRnKgVC8/R7COPKgAYwI/AAAAAAAAATw/BFe_xmUIwz4/s72-c/SecurID.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-5762947496349921233</id><published>2008-02-06T10:37:00.000-08:00</published><updated>2008-02-07T14:01:53.563-08:00</updated><title type='text'>Managing BlackBerry Configuration Settings Remotely - Putting it all Together</title><content type='html'>Now that we know how to update the device settings, let's see how it works in a real world scenario.  I have just nuked, reloaded, and reactivated my test 8700g with 4.2 OS - here is the before shot of the relevant configuration screens:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/R6t78KMgU5I/AAAAAAAAATg/UvPt62jQy0c/s1600-h/before.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/R6t78KMgU5I/AAAAAAAAATg/UvPt62jQy0c/s400/before.JPG" alt="" id="BLOGGER_PHOTO_ID_5164357671169577874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now let's push down some common changes to our device settings:&lt;br /&gt;&lt;br /&gt;1. [Messages Options / General Options] &lt;span style="font-weight: bold;"&gt;Hide Filed Messages = Yes&lt;/span&gt;  (default = No)&lt;br /&gt;2. [Messages Options / General Options] &lt;span style="font-weight: bold;"&gt;Hide Sent Messages = Yes&lt;/span&gt;  (default = No)&lt;br /&gt;3. [Messages Options / General Options] &lt;span style="font-weight: bold;"&gt;Keep Messages = Forever&lt;/span&gt; (default = 30 Days)&lt;br /&gt;4. [Messages Options / Email Reconciliation] &lt;span style="font-weight: bold;"&gt;Delete On = Mailbox &amp;amp; Handheld&lt;/span&gt; (default = Handheld)&lt;br /&gt;5. [Calendar Options] &lt;span style="font-weight: bold;"&gt;Initial View = Week&lt;/span&gt;  (default = Day)&lt;br /&gt;6. [Calendar Options] &lt;span style="font-weight: bold;"&gt;Keep Appointments = Forever&lt;/span&gt;  (default = 60 Days)&lt;br /&gt;7. [Address Book Options] &lt;span style="font-weight: bold;"&gt;Sort By = Last Name&lt;/span&gt;  (default = First Name)&lt;br /&gt;8. [Options / Date/Time] &lt;span style="font-weight: bold;"&gt;Time Zone = Central Time (-6)&lt;/span&gt;  (default = Casablanca (GMT))&lt;br /&gt;9. [Options / Screen/Keyboard] &lt;span style="font-weight: bold;"&gt;Backlight Timeout = 2 Min.&lt;/span&gt;  (default = 30 Sec.)&lt;br /&gt;&lt;br /&gt;These modifications will require the following sequence of SQL updates (you will need to replace the '15' UserConfigID with your target account's UserConfigID in your SQL DB) :&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;use BESConfig&lt;br /&gt;UPDATE SyncBackupRestore SET Data = 0x550000010101000001010101000301010800014465736B746F70000A000&lt;br /&gt;2543336323538313330000100030101000A00020005FFFF01000601020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;WHERE UserConfigID = 15 AND DatabaseName = 'Message List Options'&lt;br /&gt;UPDATE SyncBackupRestore SET Data = 0x270000000000001C02FC0300000000010000000F0000000101000500000&lt;br /&gt;00100FFFF0000000F00000001 WHERE UserConfigID = 15 AND DatabaseName = 'Calendar Options'&lt;br /&gt;UPDATE SyncBackupRestore SET Data = 0x0A000001010100000000000100 WHERE UserConfigID = 15 AND DatabaseName = 'Address Book Options'&lt;br /&gt;UPDATE SyncBackupRestore SET Data = 0x040001000000000400021400000001000302 WHERE UserConfigID = 15 AND DatabaseName = 'Options' AND UID = -447168820&lt;br /&gt;UPDATE SyncBackupRestore SET Data = 0x1000019A71C67ACBC67AB400000002000000000E00018131D8CDC28BB8&lt;br /&gt;B90000000700000D0001D30CB969B820BFDD0000000600100001C2C1986B&lt;br /&gt;11CE32B000000002000000780D0001BDAAFA49FFAD48CC00000006011000&lt;br /&gt;013E3CBC03163D39CF00000002000001C24F0001CB2088784AFC39CC0000&lt;br /&gt;000000416A6176613A2F6E65742E72696D2E6465766963652E7468656D652&lt;br /&gt;E626264696D656E73696F6E5F7A656E5F333230783234305F772E5468656D&lt;br /&gt;65466163746F72790D0001416028234B233EA70000000600100001F5006E1&lt;br /&gt;93847CE260000000200000001100001BD91E3D465E4816900000002000000&lt;br /&gt;00100001EBB9DE74CE5F773800000002000000322600011F0091A81B93E1C&lt;br /&gt;30000000000186E65745F72696D5F6170706C69636174696F6E5F6D656E75&lt;br /&gt;08000138D4D5F7DC80C5472E0001DA36AA198C1233A40000000000206E65&lt;br /&gt;745F72696D5F62625F70726F66696C65735F6170702E50726F66696C65734&lt;br /&gt;F00019B05812B5A1A15DC0000000000416A6176613A2F6E65742E72696D2&lt;br /&gt;E6465766963652E7468656D652E626264696D656E73696F6E5F7A656E5F33&lt;br /&gt;3230783234305F772E5468656D65466163746F72790D0001F33AFBD074DB0&lt;br /&gt;7F100000006001000016B506A6FCD9D596A00000002000000011000012ECB&lt;br /&gt;C575BEF57F3E00000002000000C80D0001094AC736D16697C800000006001&lt;br /&gt;000011762E2440C4D5D510000000200000064080001E8D6CB484814CA60&lt;br /&gt;WHERE UserConfigID = 15 AND DatabaseName = 'Options' AND UID = -1321243196&lt;br /&gt;UPDATE SyncConfig set SyncType=1 WHERE UserConfigId=15 AND SyncDataSourceId=11109&lt;br /&gt;go&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This will kick off a one way sync from the server to the device, pushing all the configuration databases managed by the Backup component.  It will take less than a minute for the SYNC process to pick up on this change, and about another 30 seconds or so to re-sync all the settings. [&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;sleep 120&lt;/span&gt;&lt;/span&gt;]  Now back to our handheld... it appears that all changes (in green boxes) have been picked up:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6t-eqMgU6I/AAAAAAAAATo/kuvQCltfsA8/s1600-h/after.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6t-eqMgU6I/AAAAAAAAATo/kuvQCltfsA8/s400/after.JPG" alt="" id="BLOGGER_PHOTO_ID_5164360462898320290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now we must be sure to run the following command to restore the device to server synchronization:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;UPDATE SyncConfig set SyncType=3 WHERE UserConfigId=15 AND SyncDataSourceId=11109&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;If we didn't do this, then any configuration updates from the handheld would not be backed up to the server.  Actually, this might be an interesting option to employ for some firms who want total control over the handheld... one could schedule a daily push to refresh settings to the organizational standard settings to discourage end-user customization.&lt;br /&gt;&lt;br /&gt;All of these commands could be easily scripted by putting them in a text file such as 'PushSettings.sql' and using the OSQL command's -i switch, i.e.:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;osql -S sqlservername.company.com -U sqlaccountname -P sqlpassword -i PushSettings.sql&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So that's it...  We've gone down the rabbit hole into the depths of the BES SQL DB in order to discover some of it's secrets, and we came away with a method of pushing normally hidden device configuration settings over the air.  Have fun, but remember to backup your SQL database regularly and TEST TEST TEST your scripts outside of production first!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-5762947496349921233?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/5762947496349921233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=5762947496349921233' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/5762947496349921233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/5762947496349921233'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/02/managing-blackberry-configuration_06.html' title='Managing BlackBerry Configuration Settings Remotely - Putting it all Together'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qhSyRnKgVC8/R6t78KMgU5I/AAAAAAAAATg/UvPt62jQy0c/s72-c/before.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-6812238489179095597</id><published>2008-02-04T09:59:00.000-08:00</published><updated>2008-02-04T08:00:11.278-08:00</updated><title type='text'>Managing BlackBerry Configuration Settings Remotely - Part Five</title><content type='html'>Here are the options for the Calendar, first with default settings, then with the individual options enabled along with the resulting Data string:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/R6OB-aMgU1I/AAAAAAAAATA/vF7SPxT-x4U/s1600-h/CalendarDefaults.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/R6OB-aMgU1I/AAAAAAAAATA/vF7SPxT-x4U/s400/CalendarDefaults.JPG" alt="" id="BLOGGER_PHOTO_ID_5162112507080364882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;[Default Settings Above]&lt;br /&gt;0x270000FFFFFFFF1C02FC030000000001000000&lt;br /&gt;0F0000000001000500000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Initial View: Week]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F0000000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;1&lt;/span&gt;&lt;span style="font-size:85%;"&gt;01000500000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Initial View: Month]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F0000000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;2&lt;/span&gt;&lt;span style="font-size:85%;"&gt;01000500000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Initial View: Agenda]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F0000000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;3&lt;/span&gt;&lt;span style="font-size:85%;"&gt;01000500000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Initial View: Last]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F0000000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;4&lt;/span&gt;&lt;span style="font-size:85%;"&gt;01000500000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Enable Quick Entry: No]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F000000000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;0&lt;/span&gt;&lt;span style="font-size:85%;"&gt;000500000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Default Reminder: None]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;FFFFFFFF&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0001000500000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Default Reminder: 0 Min]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;0&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0000000001000500000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Default Reminder: 1 Hour]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;3C&lt;/span&gt;&lt;span style="font-size:85%;"&gt;000000001000500000001003C000000000F00000001&lt;br /&gt;(Minutes in hex: 3C = 60 decimal)&lt;br /&gt;&lt;br /&gt;[Default Reminder: 1 Week]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;6027&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0000001000500000001003C000000000F00000001&lt;br /&gt;(Minutes in transposed hex: 2760 = 10080 decimal ; 10080/ 60 = 168 hours / 24 = 7 days)&lt;br /&gt;&lt;br /&gt;[Snooze: None]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F000000000100&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;FFFFFFFF&lt;/span&gt;&lt;span style="font-size:85%;"&gt;01003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Snooze: 1 Min]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F0000000001000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;1&lt;/span&gt;&lt;span style="font-size:85%;"&gt;00000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Snooze: 10 Min]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F0000000001000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;A&lt;/span&gt;&lt;span style="font-size:85%;"&gt;00000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Snooze: 30 Min]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F000000000100&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;1E&lt;/span&gt;&lt;span style="font-size:85%;"&gt;00000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Start of Day: 8 AM]&lt;br /&gt;0x27000000000000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;E001&lt;/span&gt;&lt;span style="font-size:85%;"&gt;FC030000000001000000&lt;br /&gt;0F0000000001000500000001003C000000000F00000001&lt;br /&gt;(Minutes past midnight in transposed hex: 01E0 = 480 decimal ; 480/60 = 8 hours)&lt;br /&gt;&lt;br /&gt;[End of Day: 6 PM]&lt;br /&gt;0x270000000000001C02&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;3804&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0000000001000000&lt;br /&gt;0F0000000001000500000001003C000000000F00000001&lt;br /&gt;(Same as above, 0438 = 1080 decimal ; 1080/60 = 18 hours or 6 PM}&lt;br /&gt;&lt;br /&gt;[First Day of Week: Mon]&lt;br /&gt;0x2700000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;1&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0000001C02FC030000000001000000&lt;br /&gt;0F0000000001000500000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[First Day of Week: Tue]&lt;br /&gt;0x2700000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;2&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0000001C02FC030000000001000000&lt;br /&gt;0F0000000001000500000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Confirm Delete: No]&lt;br /&gt;0x270000000000001C02FC030000000000000000&lt;br /&gt;0F0000000001000500000001003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Show Free Time in Agenda View: No]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F0000000001000500000001003C0000000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;1&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0F00000001&lt;br /&gt;&lt;br /&gt;[Show End Time in Agenda View: No]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F0000000001000500000001003C000000000F0000000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;0&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;[Keep Appointments: 15 Days]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F000000000100050000000100&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;0F&lt;/span&gt;&lt;span style="font-size:85%;"&gt;000000000F00000001&lt;br /&gt;&lt;br /&gt;[Keep Appointments: Forever]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F000000000100050000000100&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;FFFF&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0000000F00000001&lt;br /&gt;&lt;br /&gt;[Wireless Synchronization: No]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F000000000100050000000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;0&lt;/span&gt;&lt;span style="font-size:85%;"&gt;003C000000000F00000001&lt;br /&gt;&lt;br /&gt;[Show Tasks: Yes]&lt;br /&gt;0x270000000000001C02FC030000000001000000&lt;br /&gt;0F0000000001000500000001003C000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;1&lt;/span&gt;&lt;span style="font-size:85%;"&gt;00000F00000001&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now for the Address Book:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6OP4qMgU3I/AAAAAAAAATQ/5vuAFwxucq0/s1600-h/AddressBookDefaults.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6OP4qMgU3I/AAAAAAAAATQ/5vuAFwxucq0/s400/AddressBookDefaults.JPG" alt="" id="BLOGGER_PHOTO_ID_5162127801458905970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;[Default Settings Above]&lt;br /&gt;0x0A000001010000000000000100&lt;br /&gt;&lt;br /&gt;[Sort By: Last Name]&lt;br /&gt;0x0A000001010&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;1&lt;/span&gt;&lt;span style="font-size:85%;"&gt;00000000000100&lt;br /&gt;&lt;br /&gt;[Sort By: Company]&lt;br /&gt;0x0A000001010&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;2&lt;/span&gt;&lt;span style="font-size:85%;"&gt;00000000000100&lt;br /&gt;&lt;br /&gt;[Confirm Delete: No]&lt;br /&gt;0x0A0000010&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;0&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0000000000000100&lt;br /&gt;&lt;br /&gt;[Allow Duplicate Names: No]&lt;br /&gt;0x0A000000010000000000000100&lt;br /&gt;&lt;br /&gt;[Wireless Synchronization: No]&lt;br /&gt;0x0A000001010000000000000&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;0&lt;/span&gt;&lt;span style="font-size:85%;"&gt;00&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And finally, Tasks:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6OQh6MgU4I/AAAAAAAAATY/im2enmLuALk/s1600-h/TasksDefaults.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6OQh6MgU4I/AAAAAAAAATY/im2enmLuALk/s400/TasksDefaults.JPG" alt="" id="BLOGGER_PHOTO_ID_5162128510128509826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;[Default Settings Above]&lt;br /&gt;0x0F000000000000000000000101FFFFFFFF01&lt;br /&gt;&lt;br /&gt;[Sort By: Priority]&lt;br /&gt;0x0F00000&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;000000000000000101FFFFFFFF01&lt;br /&gt;&lt;br /&gt;[Sort By: Due Date]&lt;br /&gt;0x0F00000&lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;000000000000000101FFFFFFFF01&lt;br /&gt;&lt;br /&gt;[Sort By: Status]&lt;br /&gt;0x0F00000&lt;span style="font-weight: bold;"&gt;3&lt;/span&gt;000000000000000101FFFFFFFF01&lt;br /&gt;&lt;br /&gt;[Confirm Delete: No]&lt;br /&gt;0x0F000000000000000000000&lt;span style="font-weight: bold;"&gt;0&lt;/span&gt;01FFFFFFFF01&lt;br /&gt;&lt;br /&gt;[Snooze: 1 Min]&lt;br /&gt;0x0F000000000000000000000101&lt;span style="font-weight: bold;"&gt;01000000&lt;/span&gt;01&lt;br /&gt;&lt;br /&gt;[Snooze: 10 Min]&lt;br /&gt;0x0F000000000000000000000101&lt;span style="font-weight: bold;"&gt;0A000000&lt;/span&gt;01&lt;br /&gt;&lt;br /&gt;[Snooze: 30 Min]&lt;br /&gt;0x0F000000000000000000000101&lt;span style="font-weight: bold;"&gt;1E000000&lt;/span&gt;01&lt;br /&gt;&lt;br /&gt;[Wireless Synchronization: No]&lt;br /&gt;0x0F000000000000000000000101FFFFFFFF0&lt;span style="font-weight: bold;"&gt;0&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-6812238489179095597?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/6812238489179095597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=6812238489179095597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6812238489179095597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6812238489179095597'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/02/managing-blackberry-configuration.html' title='Managing BlackBerry Configuration Settings Remotely - Part Five'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qhSyRnKgVC8/R6OB-aMgU1I/AAAAAAAAATA/vF7SPxT-x4U/s72-c/CalendarDefaults.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-1860927157642957135</id><published>2008-01-31T12:03:00.000-08:00</published><updated>2008-02-01T12:19:57.776-08:00</updated><title type='text'>Managing BlackBerry Configuration Settings Remotely - Part Four</title><content type='html'>Now that we know how to update the settings on the device, here is a screenshot showing the default settings, and a list of Data strings with all the different Message List 'General Settings' options:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Default Message List / General Options settings:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/R6N-lKMgU0I/AAAAAAAAAS4/n1gPnMcMCMc/s1600-h/MailGeneralDefaults.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/R6N-lKMgU0I/AAAAAAAAAS4/n1gPnMcMCMc/s400/MailGeneralDefaults.JPG" alt="" id="BLOGGER_PHOTO_ID_5162108774753784642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;[Data String for Defaults above]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x350000010101000001010001000301010200051E0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Display Time: NO]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;0x3500000&lt;span style="font-weight: bold;"&gt;0&lt;/span&gt;0101000001010001000301010200051E0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Display Name: NO]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;0x350000010&lt;span style="font-weight: bold;"&gt;0&lt;/span&gt;01000001010001000301010200051E0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Display Message Header On: 1 line]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;0x350000010101000001010001000301010200051E0001000600020008&lt;br /&gt;01000100090102000B0&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;0002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Display Message Header On: 2 lines]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x350000010101000001010001000301010200051E0001000600020008&lt;br /&gt;01000100090102000B0&lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;0002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Display Message Count: None]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x350000010101000001010001000301010200051E0001000600020008&lt;br /&gt;0&lt;span style="font-weight: bold;"&gt;0&lt;/span&gt;000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Display New Message Indicator: No]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x350000010101000001010001000301010200051E0001000600020008&lt;br /&gt;01000100090&lt;span style="font-weight: bold;"&gt;0&lt;/span&gt;02000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Confirm Delete: No]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x35000001010100000101000&lt;span style="font-weight: bold;"&gt;0&lt;/span&gt;000301010200051E0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Hide Filed Messages: YES]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x350000010101000001010&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;01000301010200051E0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Hide Sent Messages: YES]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x350000010101000001010001000301010200051E000100060&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Make PIN Messages Level 1: No]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x35000001010100000101000100030&lt;span style="font-weight: bold;"&gt;0&lt;/span&gt;010200051E0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Auto More: No]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x3500000101010000010100010003010&lt;span style="font-weight: bold;"&gt;0&lt;/span&gt;0200051E0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Keep Messages: 15 Days]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x35000001010100000101000100030101020005&lt;span style="font-weight: bold;"&gt;0F&lt;/span&gt;0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Keep Messages: 2 Months]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x35000001010100000101000100030101020005&lt;span style="font-weight: bold;"&gt;3C&lt;/span&gt;0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Keep Messages: 3 Months]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x35000001010100000101000100030101020005&lt;span style="font-weight: bold;"&gt;5A&lt;/span&gt;0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Keep Messages: 4 Months]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x35000001010100000101000100030101020005&lt;span style="font-weight: bold;"&gt;78&lt;/span&gt;0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Keep Messages: 5 Months]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x35000001010100000101000100030101020005&lt;span style="font-weight: bold;"&gt;96&lt;/span&gt;0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Keep Messages: 6 Months]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x35000001010100000101000100030101020005&lt;span style="font-weight: bold;"&gt;B4&lt;/span&gt;0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [Keep Messages: Forever]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;0x35000001010100000101000100030101020005&lt;span style="font-weight: bold;"&gt;FFFF&lt;/span&gt;01000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [SMS and Email Inboxes: Combined]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;0x350000010101000001010001000301010200051E0001000600020008&lt;br /&gt;01000100090102000B000002000C0&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;0002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; [SMS and Email Inboxes: Separate]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;0x350000010101000001010001000301010200051E0001000600020008&lt;br /&gt;01000100090102000B000002000C0&lt;span style="font-weight: bold;"&gt;2&lt;/span&gt;0002000D000001000E00000000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first line contains all the default settings from my test device which is an 8700g with the 4.2 OS software.  The latter lines are the defaults with only the option shown enabled. The highlighted numbers in the rows show which number controls the setting in that row.&lt;br /&gt;&lt;br /&gt;Keep in mind that this may be different from what you see depending upon your device type and OS version, however I suspect they would be similar if not the same for the same OS version.&lt;br /&gt;&lt;br /&gt;Next: Calendar, Address Book, and Tasks options database settings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-1860927157642957135?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/1860927157642957135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=1860927157642957135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1860927157642957135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1860927157642957135'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/01/managing-blackberry-configuration_8731.html' title='Managing BlackBerry Configuration Settings Remotely - Part Four'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qhSyRnKgVC8/R6N-lKMgU0I/AAAAAAAAAS4/n1gPnMcMCMc/s72-c/MailGeneralDefaults.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-2601864888655043687</id><published>2008-01-31T09:39:00.000-08:00</published><updated>2008-02-01T07:32:39.280-08:00</updated><title type='text'>Managing BlackBerry Configuration Settings Remotely - Part Three</title><content type='html'>&lt;span style="font-style: italic;"&gt;To begin, of course, a Disclaimer&lt;/span&gt;: The BES SQL database is the heart of your BES environment.  Making changes to it outside of the UI is not supported by RIM and can do irreparable harm to your entire BES environment. The following is for informational purposes only, and I am not responsible for the thousands of midnight telephone calls you will get from your BlackBerry users when an errant SQL command has rendered your BES servers mere hunks of plastic and metal, and transmogrified into a CLM [career limiting move].  I for one will &lt;span style="font-weight: bold;"&gt;not &lt;/span&gt;be implementing these findings in my production environment!  Now, onto to the madness...&lt;br /&gt;&lt;br /&gt;Since we have discovered where the configuration setting "Hide Sent Messages" lives in the SQL database, let's try to modify it and get it pushed out to the device.  First, let's reset the option back to the default of "No" and restart the wireless to get it changed in the SQL database.  Here is the device screenshot showing the default settings:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6IJiKMgUoI/AAAAAAAAARY/9ebN9SUf3Dk/s1600-h/BBScreen1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6IJiKMgUoI/AAAAAAAAARY/9ebN9SUf3Dk/s400/BBScreen1.JPG" alt="" id="BLOGGER_PHOTO_ID_5161698605377016450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And here is the SQL data, showing that the '1' has been changed back to a '0':&lt;br /&gt;&lt;br /&gt;0x350000010101000001010001000300010200051E0001000600020008&lt;br /&gt;01000100090102000B000002000C020002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;Now, let's use a SQL command to update this string to change the '0' back to a '1':&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6IM8KMgUpI/AAAAAAAAARg/BO2ekXGquFI/s1600-h/SQLUpdate.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6IM8KMgUpI/AAAAAAAAARg/BO2ekXGquFI/s400/SQLUpdate.JPG" alt="" id="BLOGGER_PHOTO_ID_5161702350588498578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Perhaps if we restart the wireless on the device the change will sync down?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6ISb6MgUqI/AAAAAAAAARo/JiADxH3uB5o/s1600-h/BBScreen1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6ISb6MgUqI/AAAAAAAAARo/JiADxH3uB5o/s400/BBScreen1.JPG" alt="" id="BLOGGER_PHOTO_ID_5161708393607484066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Alas and alack, the change did not come down.  Oh well, that would have been too easy.   Let's take a deeper look into the SQL tables to see where we can go from here.  I see a promising table named &lt;span style="font-style: italic;"&gt;SyncConfig&lt;/span&gt;...and it appears to... wait for it... hold the Synchronization Configuration settings!  Just what we need:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6ITf6MgUrI/AAAAAAAAARw/3ENLR0jnyXM/s1600-h/SyncConfig.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6ITf6MgUrI/AAAAAAAAARw/3ENLR0jnyXM/s400/SyncConfig.JPG" alt="" id="BLOGGER_PHOTO_ID_5161709561838588594" border="0" /&gt;&lt;/a&gt;I see there are many lines associated with &lt;span style="font-style: italic;"&gt;UserConfigId &lt;/span&gt;9, which is my single test user.  I also see a column titled &lt;span style="font-style: italic;"&gt;SyncDataSourceId&lt;/span&gt;, I wonder what the numbers in this column refer to?&lt;br /&gt;&lt;br /&gt;After doing some digging I discover the &lt;span style="font-style: italic;"&gt;SyncDataSource &lt;/span&gt;table, which contains mappings between the numbers in the &lt;span style="font-style: italic;"&gt;SyncDataSourceId &lt;/span&gt;column and the names of these sources.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6IUL6MgUsI/AAAAAAAAAR4/XHsEqmSsPBo/s1600-h/SyncDataSource.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6IUL6MgUsI/AAAAAAAAAR4/XHsEqmSsPBo/s400/SyncDataSource.JPG" alt="" id="BLOGGER_PHOTO_ID_5161710317752832706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;What we are interested in would be the &lt;span style="font-style: italic;"&gt;Backup &lt;/span&gt;data source, or number 11109, as this is what we are working with.  This leads us to row 102 in the &lt;span style="font-style: italic;"&gt;SyncConfig &lt;/span&gt;table.&lt;br /&gt;&lt;br /&gt;Now the question becomes, what do the other columns in this table mean, and what can we do with them? &lt;span style="font-style: italic;"&gt;SyncType &lt;/span&gt;and &lt;span style="font-style: italic;"&gt;ConflictResolution &lt;/span&gt;appear especially intriguing given what we are trying to accomplish here.&lt;br /&gt;&lt;br /&gt;By changing some settings on the device and watching the effect on this table for other unrelated rows, I discovered that the &lt;span style="font-style: italic;"&gt;SyncType &lt;/span&gt;field has three options available:&lt;br /&gt;&lt;br /&gt;1 = Server to Device&lt;br /&gt;2 = Device to Server&lt;br /&gt;3 = Bi-directional&lt;br /&gt;&lt;br /&gt;In our case, the 11109 Backup row in this table indicates '3', or Bi-Directional sync.  I would have expected to see this set to '2' for one way backups from device to server only.  However '3' may make sense, as the backup is from device to server for the most part, but can be from server to device when changing devices for instance.&lt;br /&gt;&lt;br /&gt;Similar to &lt;span style="font-style: italic;"&gt;SyncType&lt;/span&gt;, the &lt;span style="font-style: italic;"&gt;ConflictResolution &lt;/span&gt;column appears to have two options available:&lt;br /&gt;&lt;br /&gt;0 = Server Wins&lt;br /&gt;1 = Device Wins&lt;br /&gt;&lt;br /&gt;Our row 102 shows a '0' in this column, which again is a little unexpected as I assumed that the server side was a backup to what is on the device, so the device should always win in a conflict.  Perhaps there are good reasons for these non-obvious settings that I am not aware of.&lt;br /&gt;&lt;br /&gt;In any case, we have still updated the data in the &lt;span style="font-style: italic;"&gt;SyncBackupRestore &lt;/span&gt;table but it has not sync'ed to the device, even though the sync settings shown above indicate that a) sync is bidirectional and b) the server will win on a conflict.  So really this should just work without any changes, however we need to figure out some way of 'kicking' off a sync.&lt;br /&gt;&lt;br /&gt;We know that when you disable and then re-enable synchronization from the device or BES manager for other functions such as Address Book, it will kick off an initial sync.  The issue here is that there is no way through the GUI of the device (or the BES Manager) to kick off a Backup sync, as this is an underlying process not available to the end user or administrator.&lt;br /&gt;&lt;br /&gt;Why don't we try to just flip the &lt;span style="font-style: italic;"&gt;ServerEnabled &lt;/span&gt;setting from 1 to 0, and then back to 1 to see if this does it:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6IcEKMgUtI/AAAAAAAAASA/IlsrbEsvIrw/s1600-h/SyncConfigUpdate.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6IcEKMgUtI/AAAAAAAAASA/IlsrbEsvIrw/s400/SyncConfigUpdate.JPG" alt="" id="BLOGGER_PHOTO_ID_5161718980701868754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Unfortunately, looking at the logs it doesn't appear that this trick did anything.  I see the following lines in both the SYNC and CBCK logs:&lt;br /&gt;&lt;br /&gt;[46077] (01/31 13:09:36.021):{0x1178} [SYNC-Gate] Finished user config change check. No change detected.&lt;br /&gt;[40039] (01/31 13:20:21.856):{0x1EE0} CheckResponseRcvd - no changes detected for any users.&lt;br /&gt;&lt;br /&gt;Let's move on and try to change another field, how about we try to change the &lt;span style="font-style: italic;"&gt;SyncType &lt;/span&gt;from '3' (bi-directional) to '1' (server to device):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6Ih2KMgUuI/AAAAAAAAASI/PFvDl56DVZU/s1600-h/SyncConfigUpdate2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6Ih2KMgUuI/AAAAAAAAASI/PFvDl56DVZU/s400/SyncConfigUpdate2.JPG" alt="" id="BLOGGER_PHOTO_ID_5161725337253466850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Wow! Within a minute or so of making this change there was a flurry of activity in the SYNC and CBCK logs.  I notice this line as well:&lt;br /&gt;&lt;br /&gt;[46078] (01/31 13:26:53.092):{0x1178} [SYNC-Gate] Finished user config change check. Change detected.&lt;br /&gt;&lt;br /&gt;Turns out this triggered a full synchronization, such that everything on both sides was compared and the changes pushed down to the device.  Going back into our Message List Options screen, we are presented with:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6Ii66MgUwI/AAAAAAAAASY/ZZxB2siEmb0/s1600-h/BBScreen2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6Ii66MgUwI/AAAAAAAAASY/ZZxB2siEmb0/s400/BBScreen2.JPG" alt="" id="BLOGGER_PHOTO_ID_5161726518369473282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6IjYKMgUxI/AAAAAAAAASg/idRA9zTXBNk/s1600-h/616%7EDora-The-Explorer-Posters.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6IjYKMgUxI/AAAAAAAAASg/idRA9zTXBNk/s400/616%7EDora-The-Explorer-Posters.jpg" alt="" id="BLOGGER_PHOTO_ID_5161727020880646930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As Dora would say, "&lt;span style="font-weight: bold;"&gt;Lo Hicimos!  We did it!&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So in summary, we were able to push this change to the device by doing the following:&lt;br /&gt;&lt;br /&gt;1) Locating the option in the data string of the particular settings database within &lt;span style="font-style: italic;"&gt;SyncBackupRestore&lt;/span&gt;&lt;br /&gt;2) Updating the data string with the particular option set, via SQL commands&lt;br /&gt;3) Modifying the &lt;span style="font-style: italic;"&gt;SyncType &lt;/span&gt;from '3' to '1'&lt;br /&gt;&lt;br /&gt;Now, like a good boy scout, we must remember to clean up after ourselves.  To get this to work we had to break the default &lt;span style="font-style: italic;"&gt;SyncType&lt;/span&gt;, so let's set it back to '3' so that any future changes on the device continue to be backed up:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6Ilq6MgUzI/AAAAAAAAASw/xOy-VD-YX_Q/s1600-h/SyncConfigUpdate3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R6Ilq6MgUzI/AAAAAAAAASw/xOy-VD-YX_Q/s400/SyncConfigUpdate3.JPG" alt="" id="BLOGGER_PHOTO_ID_5161729542026449714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Next Up:  Decoding the Data string in the "Message List Options" database to map out all the different option settings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-2601864888655043687?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/2601864888655043687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=2601864888655043687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2601864888655043687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2601864888655043687'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/01/managing-blackberry-configuration_31.html' title='Managing BlackBerry Configuration Settings Remotely - Part Three'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qhSyRnKgVC8/R6IJiKMgUoI/AAAAAAAAARY/9ebN9SUf3Dk/s72-c/BBScreen1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-1041319949427387027</id><published>2008-01-30T12:58:00.001-08:00</published><updated>2008-01-31T09:39:15.574-08:00</updated><title type='text'>Managing BlackBerry Configuration Settings Remotely - Part Two</title><content type='html'>OK so let's dive in and see what we can do with the SQL table SyncBackupRestore.  First of all it looks like there are separate entries for different types of settings.  Let's start with the entry for &lt;span style="font-style: italic;"&gt;Message List Options&lt;/span&gt;&lt;span&gt; for &lt;span style="font-style: italic;"&gt;UserConfigId &lt;/span&gt;#9, which is the only user in this test environment&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/R6DnG6MgUmI/AAAAAAAAARI/Tpr8V3SgmcI/s1600-h/SyncBackupRestore.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/R6DnG6MgUmI/AAAAAAAAARI/Tpr8V3SgmcI/s400/SyncBackupRestore.JPG" alt="" id="BLOGGER_PHOTO_ID_5161379278853526114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It looks like the Data column is encoded in some sort of binary format, let's see if we can use OSQL to see what's in there:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6DqwqMgUnI/AAAAAAAAARQ/116FJcmjb4k/s1600-h/SyncBackupRestoreOSQL.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/R6DqwqMgUnI/AAAAAAAAARQ/116FJcmjb4k/s400/SyncBackupRestoreOSQL.JPG" alt="" id="BLOGGER_PHOTO_ID_5161383294647947890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So after a bunch of header information we finally see the data string, and it looks like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;0x350000010101000001010001000301010200051E0001000600020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/mahoward/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /&gt;As it exists now, this string represents the state of the options for the Message List, i.e. the Messages screen on the BlackBerry.  The best way to discover what pieces control which device settings is to change an option on the device, wait for it to get synced up to the server, then check this string again to see what is different.&lt;br /&gt;&lt;br /&gt;We will first test by changing a single option on the BlackBerry, &lt;span style="font-style: italic;"&gt;Hide Sent Messages&lt;/span&gt; from the default of &lt;span style="font-weight: bold;"&gt;No &lt;/span&gt;to &lt;span style="font-weight: bold;"&gt;Yes&lt;/span&gt;  (a common enough request!).  Now the issue is waiting for the device's backup agent to push the change to the BES server, however I discover to my pleasant surprise that turning off the antenna and turning it back on will trigger the handheld agent to push any device changes up to the server.  (Restarting the BlackBerry has the same effect).&lt;br /&gt;&lt;br /&gt;I have been using the Unix "tail" utility to follow the BES server's CBCK log file (Backup connector), which is set to the debug logging level of 7 through the registry (4 is the max via the UI).  When the device connects to the network we see the following update come through:&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;[60000] (01/30 14:26:07.086):{0x151C} [ODBCRecord::DoSetValue] DATA = "DbVersion[1] Data(first 32 bytes)[0x350000010101000001010001000300010200051E000100060102000801000100] UserConfigID[9] DatabaseName[Message List Options] UID[1] ".&lt;br /&gt;&lt;br /&gt;This log entry only shows the first 32 bytes of the updated field, so we have to go back to the OSQL utility to display the full field again, and it is now set to the following:&lt;br /&gt;&lt;br /&gt;0x350000010101000001010001000301010200051E000100060&lt;span style="font-weight: bold;"&gt;1&lt;/span&gt;020008&lt;br /&gt;01000100090102000B000002000C000002000D000001000E00000000&lt;br /&gt;&lt;br /&gt;The only change in this string is the highlighted '1' near the end of the first line has now been changed from a '0' previously.  This leads us to believe that this number controls the &lt;span style="font-style: italic;"&gt;Hide Sent Messages&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; option on the device, and that modifying it from '0' to '1' enables it.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;In the next post we will try to update this field in the SQL database and (somehow!) get that update pushed to the handheld.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-1041319949427387027?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/1041319949427387027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=1041319949427387027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1041319949427387027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1041319949427387027'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/01/managing-blackberry-configuration_30.html' title='Managing BlackBerry Configuration Settings Remotely - Part Two'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qhSyRnKgVC8/R6DnG6MgUmI/AAAAAAAAARI/Tpr8V3SgmcI/s72-c/SyncBackupRestore.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-1946159858451578455</id><published>2008-01-30T12:28:00.000-08:00</published><updated>2008-01-30T12:48:10.580-08:00</updated><title type='text'>Managing BlackBerry Configuration Settings Remotely - Part One</title><content type='html'>Much of the configuration of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;BlackBerry&lt;/span&gt; devices can be controlled through IT Policy options, especially those having to do with security.  However there are many more configuration options available on the device that don't have IT Policy &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;correlates&lt;/span&gt;.  In these cases it can be difficult to control the user experience or to enforce standard organizational settings.&lt;br /&gt;&lt;br /&gt;There are a few options to automate the configuration of these device settings:&lt;br /&gt;&lt;br /&gt;1) Configure a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;BlackBerry&lt;/span&gt; with your custom settings, then back it up to a .&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;IPD&lt;/span&gt; file.  For each new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;BlackBerry&lt;/span&gt; deployed, restore the .&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;IPD&lt;/span&gt; file before activation.&lt;br /&gt;&lt;br /&gt;2) Configure a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;BlackBerry&lt;/span&gt; with your custom settings, then assign it to the new user's account.  Then activate a new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;BlackBerry&lt;/span&gt; against the same account, which will inherit the device configuration settings from the old device.&lt;br /&gt;&lt;br /&gt;These options can set an initial standard, however they cannot be changed remotely or locked down and enforced over time.  The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;BlackBerry&lt;/span&gt; device user will have the ability to modify these settings and break the standard.&lt;br /&gt;&lt;br /&gt;The fact that option #2 above exists tells us that the device configuration settings &lt;span style="font-style: italic;"&gt;are &lt;/span&gt;stored within the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;BES&lt;/span&gt; environment, as that is how swapping in brand new device for a user can inherit all the old device's settings.  Unfortunately the location of these settings is not easily accessible to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;BES&lt;/span&gt; Administrator, as this function was really only designed for backup and restoration purposes.&lt;br /&gt;&lt;br /&gt;However... if we can figure out where these settings are stored perhaps we can modify them somehow from the back end, and push them down to the device.  We know that most configuration information is stored in the central &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;SQL&lt;/span&gt; database, so this is where the configuration must be stored as well.&lt;br /&gt;&lt;br /&gt;Peeking around my test environment I discovered a table in the database called &lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;SyncBackupRestore&lt;/span&gt;&lt;/span&gt;.  It appears that much of the device's configuration settings are stored in this table.  In the next post we will dig deeper into this table to discover what it holds and how perhaps we can modify it and push the changes to a remote BlackBerry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-1946159858451578455?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/1946159858451578455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=1946159858451578455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1946159858451578455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1946159858451578455'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/01/managing-blackberry-configuration.html' title='Managing BlackBerry Configuration Settings Remotely - Part One'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-6576619207477832651</id><published>2008-01-23T10:40:00.001-08:00</published><updated>2008-01-23T11:41:33.517-08:00</updated><title type='text'>BlackBerry Lookup - The Details (Updated for 4.1 SP4)</title><content type='html'>After doing some troubleshooting on lookups the other day I discovered that there are now some additional fields that are returned via lookup, that were not there back in the 4.0 days when I posted my first post on this over a year ago.&lt;br /&gt;&lt;br /&gt;Specifically, the Home Address fields have now been added, which is nice.  Here is a lookup result that includes as the data the Notes Person document field names that the lookup pulls from for reference:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/R5eLYaMgUhI/AAAAAAAAAQg/AGBrij1J_d4/s1600-h/Lookup4.1.4.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/R5eLYaMgUhI/AAAAAAAAAQg/AGBrij1J_d4/s400/Lookup4.1.4.jpg" alt="" id="BLOGGER_PHOTO_ID_5158745149641085458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Please note two missing items from this lookup:&lt;br /&gt;&lt;br /&gt;1) PIN is missing due to the test Person document not having a BlackBerry device&lt;br /&gt;&lt;br /&gt;2) The "Fax: OfficeFAXPhoneNumber" lookup result is missing, though populated in the Person document.  This is due to a known issue introduced in SP4 MR1 and scheduled to be fixed in SP5.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, onto something interesting that I wasn't aware of before.  You are able to customize the lookup results to a certain extent, by using the 4 "User Defined x" fields present in the "Edit PIM Sync Global Field Mappings" command from the BES Manager.  [I didn't think this was an option as I always thought that the Global Field Mappings had to do with Address Book synchronization, I never thought they would impact the lookup results.]&lt;br /&gt;&lt;br /&gt;Simply choose an unmapped field, drop down the Device Field column field and choose one of the User Defined fields to assign it to:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/R5eYXKMgUlI/AAAAAAAAARA/GsqfLInpNIo/s1600-h/PIMSync.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/R5eYXKMgUlI/AAAAAAAAARA/GsqfLInpNIo/s400/PIMSync.JPG" alt="" id="BLOGGER_PHOTO_ID_5158759421817410130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In my test environment I have assigned the following custom fields:&lt;br /&gt;&lt;br /&gt;User Defined 1 --&gt;  Assistant&lt;br /&gt;User Defined 1 --&gt;  Manager&lt;br /&gt;User Defined 1 --&gt;  Spouse&lt;br /&gt;User Defined 1 --&gt;  Children&lt;br /&gt;&lt;br /&gt;When I do this, I get the following lookup result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R5eTTqMgUiI/AAAAAAAAAQo/09USOWBGJM4/s1600-h/Lookup4.1.4B.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R5eTTqMgUiI/AAAAAAAAAQo/09USOWBGJM4/s400/Lookup4.1.4B.JPG" alt="" id="BLOGGER_PHOTO_ID_5158753864129729058" border="0" /&gt;&lt;/a&gt;I see the Assistant, Manager, and Spouse fields, but not the Children field I mapped.  Perhaps there is an issue with the "User Defined 4" field not working correctly for lookups.  Let me change the mapping of this field to "Department" and see what happens:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/R5eUb6MgUjI/AAAAAAAAAQw/HuVMooU2zmI/s1600-h/Lookup4.1.4C.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/R5eUb6MgUjI/AAAAAAAAAQw/HuVMooU2zmI/s400/Lookup4.1.4C.JPG" alt="" id="BLOGGER_PHOTO_ID_5158755105375277618" border="0" /&gt;&lt;/a&gt;Interestingly, the Department field does come over.  So perhaps it is not an issue with the "User Defined 4" field , but with the Children field not working correctly.&lt;br /&gt;&lt;br /&gt;On a final note, the Comments field on the Person document can be multiple lines and all lines will show up on the BlackBerry lookup.  So instead of the "User1:" etc mapping above you can create freeform text lines in the Comments field if you need them on the BlackBerry lookup.  For example, I added two additional lines to the Comments field in the Person document, and here they are on the lookup:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R5eVkqMgUkI/AAAAAAAAAQ4/rDtW4StaidQ/s1600-h/Lookup4.1.4D.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R5eVkqMgUkI/AAAAAAAAAQ4/rDtW4StaidQ/s400/Lookup4.1.4D.JPG" alt="" id="BLOGGER_PHOTO_ID_5158756355210760770" border="0" /&gt;&lt;/a&gt;I'm not sure what the limit on the number of lines or characters are for the free form text Comments field.  I was able to put 60 lines of information in that field and they were all returned to the BlackBerry on a lookup, so there is quite a bit of information that could be stored here.&lt;br /&gt;&lt;br /&gt;Well I hope this helps you customize your lookups so that you can give your users better information directly on their device.  Now the greater problem is how to get all this good information from other sources, such as the HR database, into the Person documents in names.nsf in the first place.  (Luckily for me that heavy lifting job was already done by our development team for another project.)  Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-6576619207477832651?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/6576619207477832651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=6576619207477832651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6576619207477832651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6576619207477832651'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/01/blackberry-lookup-details-updated-for.html' title='BlackBerry Lookup - The Details (Updated for 4.1 SP4)'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qhSyRnKgVC8/R5eLYaMgUhI/AAAAAAAAAQg/AGBrij1J_d4/s72-c/Lookup4.1.4.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-6536914725540837653</id><published>2008-01-22T10:19:00.000-08:00</published><updated>2008-01-22T10:42:08.117-08:00</updated><title type='text'>Lookup Strangeness  -&gt; "Reset PIM Sync Global Field Mapping" is the Fix</title><content type='html'>I recently discovered that our BlackBerry lookups were returning some bad information.  Our addressing information was coming up wrong, in that the Home Address header was missing, replaced by a second Work Address header.  Also, the information in the home address fields was limited just to city and country.&lt;br /&gt;&lt;br /&gt;Here is what we were seeing (fields filled with dummy info for testing):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/R5Y2Ikkl5nI/AAAAAAAAAQQ/cACAEBFSTLE/s1600-h/BBscreen-mahoward-2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/R5Y2Ikkl5nI/AAAAAAAAAQQ/cACAEBFSTLE/s400/BBscreen-mahoward-2.JPG" alt="" id="BLOGGER_PHOTO_ID_5158369944083490418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The last address is actually the two home address fields city and country, but labeled as a second Work Address.   I had never seen this before, at least this was working properly a few months ago.  We have a secondary BES infrastructure in the EU, totally separate, but alas this was occuring there too, which pointed to a Domino problem.&lt;br /&gt;&lt;br /&gt;I assumed this must be due to some corruption or weird customization in the names.nsf, where the BES pulls this information from.  However copying and pasting my person document into my test BES environment, then doing a lookup from a test device, returned all the proper information!  Puzzling...&lt;br /&gt;&lt;br /&gt;It is difficult to explain this issue to RIM support, and they also could not recreate the solution in their environment.  On a whim, I decided to investigate the "Reset PIM Sync Global Field Mapping" command.  After testing this in the test environment and determining that this command would not reset user's custom address book mappings, I ran it.  Guess what?  All lookup problems solved:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/R5Y3P0kl5oI/AAAAAAAAAQY/LnmgHl8IcfE/s1600-h/BBscreen-mahoward-1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/R5Y3P0kl5oI/AAAAAAAAAQY/LnmgHl8IcfE/s400/BBscreen-mahoward-1.JPG" alt="" id="BLOGGER_PHOTO_ID_5158371168149169794" border="0" /&gt;&lt;/a&gt;The Home Address is now properly labeled, and although blanked out above, the fields for street address, state, and zip code now appear along with city and country.&lt;br /&gt;&lt;br /&gt;This solution points to the address book mappings being off kilter within the BES SQL database, but how did that happen?  We don't touch them.  And since both of our completely separate BES environments experienced the issue, I must believe that a particular upgrade path (we keep versions the same in US and EU) caused this mis-mapping.&lt;br /&gt;&lt;br /&gt;Easy solution to a strange issue!&lt;br /&gt;&lt;br /&gt;p.s. I discovered some other interesting lookup related information during this search that I will discuss in an upcoming post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-6536914725540837653?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/6536914725540837653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=6536914725540837653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6536914725540837653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6536914725540837653'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/01/lookup-strangeness-reset-pim-sync.html' title='Lookup Strangeness  -&gt; &quot;Reset PIM Sync Global Field Mapping&quot; is the Fix'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qhSyRnKgVC8/R5Y2Ikkl5nI/AAAAAAAAAQQ/cACAEBFSTLE/s72-c/BBscreen-mahoward-2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-6796993460480695922</id><published>2008-01-16T09:19:00.000-08:00</published><updated>2008-01-16T10:17:21.496-08:00</updated><title type='text'>How to Recover* from a Total Loss of BESMgmt SQL database (* with caveats...)</title><content type='html'>The BESMgmt SQL database is the heart of the Blackberry Enterprise environment.  Without it, BES servers will continue to deliver mail but no meaningful changes can be made, or BES services restarted, until it is back up.&lt;br /&gt;&lt;br /&gt;The only piece of the BES environment that is out of my control is the database, which is hosted and managed by our SQL team.  Although I have full confidence in their replication, backup, and recovery plans, I still need to plan for the (hopefully very remote) possibility that the SQL db might go bye-bye someday.&lt;br /&gt;&lt;br /&gt;Until now, this worst case scenario resulted in an "oh well, everybody will have to reactivate their devices" DR plan.  I dread the day I have to say this to the CIO!&lt;br /&gt;&lt;br /&gt;Recently, however I got wind of the idea of using the &lt;span style="font-weight: bold;"&gt;nbesmigration.exe&lt;/span&gt; utility for DR purposes.  This utility was originally designed to populate user accounts in the 4.0 SQL database from a version 2.2 profiles database.  Since the 4.x environment still maintains a BlackBerryProfiles notes database on each server, the tool could theoretically be used to re-create the user accounts from these profile entries into a brand new SQL database.&lt;br /&gt;&lt;br /&gt;While running the tool in testing, I noticed the following text as part of the built-in help:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;BlackBerry Enterprise Server(c) for Lotus Domino(c) Migration Tool, Version 4.1&lt;br /&gt;Copyright (c) Research In Motion, Ltd. 2004, 2006. All rights reserved.&lt;br /&gt;Modification date: May  8 2007&lt;br /&gt;&lt;br /&gt;Usage: NBESMigration.exe [options]&lt;br /&gt;&lt;br /&gt;This tool can be used to migrate entries from BESD 2.2.x Profiles database to BESMgmt database (UserConfig table).  For migration, create the database first using CreateDB, create a server entry in ServerConfig, and run this tool from your BESD server's Domino directory.&lt;br /&gt;&lt;br /&gt;This tool can also used for disaster recovery or fixup purposes on already installed BESD server (4.0 and up).  Shut down the BES, and run this tool from your BESD server's Domino directory.  The tool will check all user docs in Profiles DB, create entries, if needed, in BESMgmt DB (UserConfig table), and it will link entries using SQLID field.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;From the text it appears that this tool does support a limited form of DR.  Good news! So to test, I did the following in my test environment:&lt;br /&gt;&lt;br /&gt;1. Detach the BES SQL db and drop all connections.&lt;br /&gt;&lt;br /&gt;2. Stop BES server task and services.&lt;br /&gt;&lt;br /&gt;3. Run the BlackBerry Congfiguration Utility and choose the Change Database option.&lt;br /&gt;&lt;br /&gt;4. Enter a different database name, thus creating a brand new database.&lt;br /&gt;&lt;br /&gt;5. Re-enter CAL and SRP information, but do not restart services.&lt;br /&gt;&lt;br /&gt;6. From the tools subdirectory of the BES 4.1 installation share, copy the nbesmigration.exe executable to the c:\lotus\domino directory&lt;br /&gt;&lt;br /&gt;7. Run the following command &lt;span style="font-style: italic;"&gt;nbesmigration -d: "[SQL Server name]" "[SQL DB name]" -u: [SQL login] [password].&lt;/span&gt; In my case this command line looked like this:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;nbesmigration -d: "SQLTEST01" "BESMgmtTest" -u: besdbowner besdbpassword&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;   The tool indicated that it found my one test account and migrated it successfully.&lt;br /&gt;&lt;br /&gt;8. Restart the BES server task and services.&lt;br /&gt;&lt;br /&gt;The server fired up and I was able to immediately send and receive messages, and do lookups from my device!  So this is a great way to recover basic functionality in the case of a total loss of the SQL db.&lt;br /&gt;&lt;br /&gt;Keep in mind that you need some information documented and handy to provide to the configuration wizard:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;CAL licenses&lt;/li&gt;&lt;li&gt;SRP ID's&lt;/li&gt;&lt;li&gt;SRP Authorization keys&lt;/li&gt;&lt;/ul&gt;Now, for the caveats:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IT Policies are reset to defaults (!)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PIM Sync Mappings are reset to defaults&lt;/li&gt;&lt;li&gt;Email Settings are reset to defaults&lt;/li&gt;&lt;li&gt;Probably a bunch of other stuff is gone or reset to defaults&lt;/li&gt;&lt;/ul&gt;Although some of the other stuff is fixable, I was unable to successfully apply the default IT policy or a newly created IT policy in the new enviroment, even when it was named the same as the old IT policy.  It always came back with an error.  On the other hand, when I switched DB's back to the original, the original IT policy was able to be re-applied successfully.&lt;br /&gt;&lt;br /&gt;The upshot is that this is a last-last-resort option to get mail flowing to the devices without having everyone reactivate.  If you can later restore the original SQL DB and switch back to it, then IT Policies, PIM Sync settings, etc, can be restored back to their original good state.&lt;br /&gt;&lt;br /&gt;If you can never get the original DB back, however, then you might have to move forward and find some creative solutions to the problems above.  If the solution does eventually require handheld reactivation, well then at least you can control and stage it on your terms, without having hundreds of people screaming at you to get their BlackBerry email fixed!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-6796993460480695922?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/6796993460480695922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=6796993460480695922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6796993460480695922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6796993460480695922'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/01/how-to-recover-from-total-loss-of.html' title='How to Recover* from a Total Loss of BESMgmt SQL database (* with caveats...)'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-810956102651742054</id><published>2008-01-15T08:01:00.000-08:00</published><updated>2008-01-15T08:30:37.485-08:00</updated><title type='text'>Last Handheld Contact Times - Bogus?</title><content type='html'>This is a useful field to know when the last time the server talked to the handheld... until I started to suspect this information, as there were contact times very recently with handhelds that I knew were disabled.&lt;br /&gt;&lt;br /&gt;To test this out I turned off my BlackBerry and restarted the BES task.  The last handheld contact time updated to the current time, with the device turned off in front of me!  See the below screenshot, showing last contact time of 1/15/2008 10:16:51AM, when the device was turned off at about 10:10 AM.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/R4zeV0kl5mI/AAAAAAAAAPw/yX7eqwE1w8U/s1600-h/LastContactBogus.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/R4zeV0kl5mI/AAAAAAAAAPw/yX7eqwE1w8U/s400/LastContactBogus.JPG" alt="" id="BLOGGER_PHOTO_ID_5155740139903116898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To see why this is updating, I checked the MAGT logs for activity on my account during this time:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;[40000] (01/15 10:16:51.733):{0xB04} {Test User/Domain} Sending PIM Transaction to Sync Server, Tag 225 (config request)&lt;br /&gt;[40000] (01/15 10:16:51.733):{0x1F9C} [BIPP] Send data, Tag=225&lt;br /&gt;[40000] (01/15 10:16:51.748):{0x19E0} [BIPP] Received status DELIVERED, Tag=225&lt;br /&gt;[40392] (01/15 10:16:51.748):{0xB04} {Test User/Domain} SRP: TID=225, type PIMSYNC returned DELIVERED&lt;br /&gt;[40000] (01/15 10:16:51.748):{0x19E0} [BIPP] Received datagram, Tag=436&lt;br /&gt;[40076] (01/15 10:16:51.748):{0xB04} {Test User/Domain} SendStatusToWirelessNetworkUsingSRP SendQ, TID=436&lt;br /&gt;[40400] (01/15 10:16:51.748):{0xB04} {Test User/Domain} Received datagram with content type agent_sync, TID=436, for user Test User/Domain&lt;br /&gt;[40000] (01/15 10:16:51.748):{0x1F9C} [BIPP] Send status DATA_ACCEPTED, Tag=436&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The only activity that occured was an internal communication to the Sync server, and what looks like a request to perform a handheld agent sync.  Note that both transactions appear to show successful connections with the device, however these are only internal communications between components on the BES server itself.  Perhaps the time of successful &lt;span style="font-style: italic;"&gt;internal &lt;/span&gt;communication is being reported?&lt;br /&gt;&lt;br /&gt;In any case, it appears that this is quite a bogus field which provides no useful real world information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-810956102651742054?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/810956102651742054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=810956102651742054' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/810956102651742054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/810956102651742054'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2008/01/last-handheld-contact-times-bogus.html' title='Last Handheld Contact Times - Bogus?'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qhSyRnKgVC8/R4zeV0kl5mI/AAAAAAAAAPw/yX7eqwE1w8U/s72-c/LastContactBogus.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-5896890023665654044</id><published>2007-11-02T12:59:00.000-07:00</published><updated>2007-11-02T13:42:42.492-07:00</updated><title type='text'>MDS What?</title><content type='html'>MDS stands for Mobile Data Service, and it is a service that allows you to access other data sources (mostly Internet / Intranet browsing) via your BlackBerry.&lt;br /&gt;&lt;br /&gt;In BES 4.1, however, MDS has turned into a many-headed hydra.  What we know of as "BlackBerry Mobile Data Service" in 4.0 is now inexplicably called the "BlackBerry MDS Connection Service" in 4.1.  Meanwhile, there are a whole bunch of new MDS related services:&lt;br /&gt;&lt;br /&gt;•BlackBerry MDS Application Integration Service&lt;br /&gt;•BlackBerry MDS Data Optimization Service&lt;br /&gt;•BlackBerry MDS Provisioning Service&lt;br /&gt;•BlackBerry MDS Administrative and Management Service&lt;br /&gt;•BlackBerry® MDS Studio Application Repository&lt;br /&gt;&lt;br /&gt;But wait, there's more!  The new MDS stuff also requires a brand new SQL db running on the same SQL server as the BESMgmt database, which can results in permission issues when creating without the proper authority.&lt;br /&gt;&lt;br /&gt;All of the above services &amp;amp; database are related to the new 4.1 software deployment environment installed when you choose the upgrade option called:&lt;br /&gt;&lt;br /&gt;"BlackBerry Enterprise Server with MDS Services and Components"&lt;br /&gt;&lt;br /&gt;But really, this whole new "MDS" software deployment infrastructure is not needed at the initial upgrade from 4.0 to 4.1.  To avoid complexity, you can leave this whole new set of services out of the upgrade.  Later, you can install the new MDS stuff on a separate server if you like, as it was made to be modular and have one separate MDS instance serve many BES servers.&lt;br /&gt;&lt;br /&gt;The confusing part is that if you run the upgrade, you get these two choices:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/RyuLenzGw3I/AAAAAAAAAMQ/S-wMwmPlj1o/s1600-h/Upgrade.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/RyuLenzGw3I/AAAAAAAAAMQ/S-wMwmPlj1o/s400/Upgrade.JPG" alt="" id="BLOGGER_PHOTO_ID_5128345958887113586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If I do not know *exactly* what this means, I will by default choose the second option,  "BlackBerry Enterprise Server with MDS Services and Components", because I want to keep my MDS service from 4.0, right?&lt;br /&gt;&lt;br /&gt;Wrong... choosing the first option will give you the same 4.0 MDS (renamed MDS Connection Service) while avoiding the complexity of installing the new whiz-bang MDS software deployment stuff.&lt;br /&gt;&lt;br /&gt;In a nutshell: if you want to greatly simplify your 4.0 -&gt; 4.1 upgrade, opt for the first install method selected in the picture above.  You will lose no MDS functionality from the 4.0 perspective, and can add on the new stuff later when you are ready and comfortable with 4.1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-5896890023665654044?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/5896890023665654044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=5896890023665654044' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/5896890023665654044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/5896890023665654044'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/11/mds-what.html' title='MDS What?'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qhSyRnKgVC8/RyuLenzGw3I/AAAAAAAAAMQ/S-wMwmPlj1o/s72-c/Upgrade.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-3536143158523218931</id><published>2007-11-01T07:09:00.000-07:00</published><updated>2007-11-01T07:22:24.594-07:00</updated><title type='text'>Malformed Message Crashes BES 4.1 SP4</title><content type='html'>The idea that a malformed message will crash a BES server is nothing new - service packs have taken care of these issues many times in the past.  I apparently discovered another one, as one of my servers crashed twice just after midnight last night.&lt;br /&gt;&lt;br /&gt;Fortunately Domino restarted itself and was back up and operational in minutes (thanks transaction logging!).  After the second crash, however, it did not crash again.  Usually the BES will keep trying to re-read the malformed message and crash over and over until you figure out the message and delete it from the user's mailfile, but not this time.&lt;br /&gt;&lt;br /&gt;From the logs I see the attempts to read which resulted in crashes:&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/mahoward/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;img src="file:///C:/DOCUME%7E1/mahoward/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt="" /&gt;&lt;img src="file:///C:/DOCUME%7E1/mahoward/LOCALS%7E1/Temp/moz-screenshot-2.jpg" alt="" /&gt;&lt;span style="font-size:85%;"&gt;[40000] (11/01 00:00:44.858):{0x19B0} {User} [Mailfile], ModifiedByName detected change&lt;br /&gt;[40000] (11/01 00:00:44.905):{0x19B0} {User} [Mailfile], fetching modified documents since 11/01/2007 12:00:43 AM&lt;br /&gt;&lt;br /&gt;..[CRASH HERE!]..&lt;br /&gt;&lt;br /&gt;[40000] (11/01 00:05:02.452):{0x1830} {User} [Mailfile], ModifiedByName detected change&lt;br /&gt;[40000] (11/01 00:05:02.452):{0x1830} {User} [Mailfile], fetching modified documents since 11/01/2007 12:00:43 AM&lt;br /&gt;&lt;br /&gt;..[CRASH HERE!]..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But on the third attempt I see this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;[40000] (11/01 00:08:10.515):{0x1640} {User} [Mailfile], fetching modified documents since 11/01/2007 12:00:43 AM&lt;br /&gt;[20039] (11/01 00:08:10.530):{0x1640} {User} Already attempted to open NID=3DAF2 for user User: Message has been quarantined, skipping now&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nice job RIM!  This quarantining feature allowed me to stay peacefully asleep instead of having to get up and hunt down the offending message.&lt;br /&gt;&lt;br /&gt;BTW, the message in question was a digest from a mailing list which included a BinHex encoded MIME part &lt;span style="font-style: italic;"&gt;in the body of the message&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;--B_3276667131_13573&lt;br /&gt;Content-type: application/mac-binhex40; name="[Filename].doc"&lt;br /&gt;Content-disposition: attachment;&lt;br /&gt;         filename="[Filename].doc"&lt;br /&gt;&lt;br /&gt;(This file must be converted with BinHex 4.0)&lt;br /&gt;:(8K[G#p1Eh3J9A"NBA4P)#dJ5R9XH5!R-$FZC'pM!&amp;amp;Fi3Nj08eG%!*!%UJ#3"GN&lt;br /&gt;Jd-m4i+'a'Z%!N"!q!!-!r[m*!!B!N!X"!*!$8!#3#"!!!&amp;amp;)!N!-"!*!$r[q3!`#&lt;br /&gt;3"%m!N!2rN2rrN,(XTF%!Kf%*"!!!q"+r!*!&amp;amp;!4%!!3!"!!B!!28L!!!1!'TLDQ+&lt;br /&gt;`Zl#l!*!5#33@!#3d!!$Df3%!fYN"!28F!*!Hrrm2!*!*rrm2!*!*rrm2!*!4L!#&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am pretty sure this is the part that utterly confused the BES since:&lt;br /&gt;&lt;br /&gt;a) it was in the body&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;b) was a binhex part, which I have seen trouble with in prior BES versions even when it was properly encoded.&lt;br /&gt;&lt;br /&gt;Looking through the release notes for 4.1 SP4 MR2, I see the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;*SDR 135729 In BlackBerry Enterprise Server Version 4.1 SP4, if a message contained truncated or incorrectly encoded data, the BlackBerry Enterprise Server might have stopped responding. In BlackBerry Enterprise Server Version 4.1 SP4 MR2 and later, this issue is resolved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I love to see this - it means I don't have to report the issue to RIM, someone else already has!  Also I can tell my manager when he asks about the crashes that it is already fixed in the next maintenance release, which we will now plan on deploying.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-3536143158523218931?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/3536143158523218931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=3536143158523218931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/3536143158523218931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/3536143158523218931'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/11/malformed-message-crashes-bes-41-sp4.html' title='Malformed Message Crashes BES 4.1 SP4'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-1214145005694430042</id><published>2007-10-24T10:18:00.001-07:00</published><updated>2007-10-24T10:24:46.352-07:00</updated><title type='text'>Decoding the BlackBerry State Database</title><content type='html'>So we all know that state database correlates the messages in the mailfile with the messages on the BlackBerry. The way it does this is by creating a separate entry in the state database for each email the BES sees in the mailfile.  Each of these entries has exactly the same UNID as the original email in the state database.&lt;br /&gt;&lt;br /&gt;Now I am trying to decode the MessageState field in the state database entries.  Searching through my own state database, I find all of the following various "state codes" under the MessageState field:&lt;br /&gt;&lt;br /&gt;0&lt;br /&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;7&lt;br /&gt;8&lt;br /&gt;9&lt;br /&gt;10&lt;br /&gt;13&lt;br /&gt;14&lt;br /&gt;17&lt;br /&gt;&lt;br /&gt;That's alot of "states" a message can be in!&lt;br /&gt;&lt;br /&gt;I have started testing and have determined the first couple:&lt;br /&gt;&lt;br /&gt;2:    Email has been queued / sent to wireless network but not received by device yet&lt;br /&gt;3:    Email not redirected to handheld (redirection disabled)&lt;br /&gt;4:    Email has been delivered to device&lt;br /&gt;&lt;br /&gt;It will be tough to figure out the rest, though!  I will update this doc as I discover them...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-1214145005694430042?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/1214145005694430042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=1214145005694430042' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1214145005694430042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1214145005694430042'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/10/decoding-blackberry-state-database.html' title='Decoding the BlackBerry State Database'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-3253229350430332612</id><published>2007-10-08T10:34:00.000-07:00</published><updated>2007-10-08T11:13:23.675-07:00</updated><title type='text'>Remove IT Policy - New Feature of 4.1 SP4 / OS 4.2.2</title><content type='html'>We now have an easy way to remove the applied IT Policy from a handheld, which was previously locked to the device even after you wiped it.&lt;br /&gt;&lt;br /&gt;If you have 4.1 SP4 and a device with OS 4.2.2 or greater, here is how to remove the IT policy and set the device to a true factory default state:&lt;br /&gt;&lt;br /&gt;1) Create a new IT policy (or modify an existing policy) and set the &lt;span style="font-weight: bold;"&gt;Remote Wipe Reset to Factory Defaults&lt;/span&gt; setting in the &lt;span style="font-weight: bold;"&gt;Security Policy&lt;/span&gt; group to &lt;span style="font-weight: bold;"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/RwpzNmRCkvI/AAAAAAAAALY/MA0KGyziV_Y/s1600-h/ITPolicyRemoval.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/RwpzNmRCkvI/AAAAAAAAALY/MA0KGyziV_Y/s320/ITPolicyRemoval.JPG" alt="" id="BLOGGER_PHOTO_ID_5119030603907502834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Assign this IT policy to a particular user account&lt;br /&gt;3) Send the command "Erase Data and Disable Handheld"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/RwpsHmRCkuI/AAAAAAAAALQ/8RBRgQpbSD0/s1600-h/ITPolicyRemoval2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/RwpsHmRCkuI/AAAAAAAAALQ/8RBRgQpbSD0/s320/ITPolicyRemoval2.JPG" alt="" id="BLOGGER_PHOTO_ID_5119022804246893282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4) Verify receipt of command by device under "IT Policy Status"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-3253229350430332612?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/3253229350430332612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=3253229350430332612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/3253229350430332612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/3253229350430332612'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/10/remove-it-policy-new-feature-of-41-sp4.html' title='Remove IT Policy - New Feature of 4.1 SP4 / OS 4.2.2'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qhSyRnKgVC8/RwpzNmRCkvI/AAAAAAAAALY/MA0KGyziV_Y/s72-c/ITPolicyRemoval.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-243223379865669871</id><published>2007-09-27T06:14:00.001-07:00</published><updated>2007-09-27T06:23:06.118-07:00</updated><title type='text'>Update on Comcast's Man in the Middle Attacks on Lotus Notes</title><content type='html'>For those of you Notes client users suffering from Comcast's "filtering", there is a &lt;a href="http://kkanarski.blogspot.com/2007/09/comcast-filtering-lotus-notes-update.html"&gt; great post by my colleague Kevin Kanarski&lt;/a&gt; who has details of packet captures that result from sending an email with a 6MB attachment from a Notes client using the Internet connection.&lt;br /&gt;&lt;br /&gt;These captures, from both ends, clearly show that Comcast is imitating both the client and server in sending RST [reset] packets to the other end of the connection.  Neither the client nor the server generated any RST packets, so this is definitely shady behavior by Comcast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-243223379865669871?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/243223379865669871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=243223379865669871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/243223379865669871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/243223379865669871'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/09/update-on-comcasts-man-in-middle.html' title='Update on Comcast&apos;s Man in the Middle Attacks on Lotus Notes'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-2445331768309480984</id><published>2007-09-20T12:04:00.000-07:00</published><updated>2007-09-20T12:22:23.383-07:00</updated><title type='text'>Tuning the "More" Cache</title><content type='html'>We all know the pesky little "More" command that lets you download successively more and more of your email, beyond the first 4K delivered to the BlackBerry.&lt;br /&gt;&lt;br /&gt;Well on the server side, there is a cache that holds this information, and it is called the "More cache".  [Wow these names really need a little obfuscation, they make too much sense to exist in the PC world]&lt;br /&gt;&lt;br /&gt;Anyhoo, you can tune the amount of cache that the BES allocates to this function, and by default it gives it 10MB.  Well at this level I was filling up the cache in about 6 hours from server startup, and only realizing a maximum of 84% hit rate:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;[45009] (09/14 02:35:58.078):{0x13BC} More cache hit rate: 0.0%, requests: 0, adds: 0, size: 0.0/10.0 Mb&lt;br /&gt;...&lt;br /&gt;[45009] (09/14 08:33:32.778):{0x13BC} More cache hit rate: 69.0%, requests: 126, adds: 2270, size: 5.7/10.0 Mb&lt;br /&gt;...&lt;br /&gt;[45009] (09/14 09:48:32.294):{0x13BC} More cache hit rate: 75.7%, requests: 214, adds: 5031, size: 10.0/10.0 Mb&lt;br /&gt;...&lt;br /&gt;[45009] (09/14 23:48:32.111):{0x13BC} More cache hit rate: 84.4%, requests: 784, adds: 29120, size: 10.0/10.0 Mb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;If the remaining text is not found in the More cache, then the BES server needs to open the mailfile to pull it in, which is expensive in terms of network I/O and Domino server I/O.  [Not hugely, of course, but I like to squeeze as much performance out of my systems as possible] If it can find it in the cache, here is what you will see in your MAGT log:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span&gt;[40231] (09/14 01:11:01.290):{0x608} {XXXX} Original message (RID=-576019096) retrieved from More cache. Not opening the mail file.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That is a message that I like to see!&lt;br /&gt;&lt;br /&gt;So I decided to double the default of 10MB to 20MB by adding the following DWORD registry key, and setting it to "20" decimal:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span&gt;HKLM\Software\Research In Motion\BlackBerry Enterprise Server\Agents\MoreCacheSize&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After a restart of the server (not required) here is what I now see:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;[45009] (09/20 13:50:51.888):{0x14E0} More cache hit rate: 89.5%, requests: 3004, adds: 127078, size: 20.0/20.0 Mb&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;So fully loaded, it is running ~90% cache hit rate now, which is not a huge gain but it is something.  RIM considers &gt;90% hit rates to be good, but I haven't decided how much more I want to push this setting as it takes away memory from other processes for this task.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-2445331768309480984?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/2445331768309480984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=2445331768309480984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2445331768309480984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2445331768309480984'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/09/tuning-more-cache.html' title='Tuning the &quot;More&quot; Cache'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-1631334863864645148</id><published>2007-08-15T13:34:00.000-07:00</published><updated>2007-08-15T13:51:35.278-07:00</updated><title type='text'>BlackBerry Service Books - BES only</title><content type='html'>Here is a comprehensive list of the BES related service books available on a BlackBerry device:&lt;br /&gt;&lt;br /&gt;Desktop [CMIME]:                    Send/Receive Email and Wireless Reconciliation&lt;br /&gt;Desktop [SYNC]:                        Wireless Address Book&lt;br /&gt;Desktop [CICAL]:                      Wireless Calendar&lt;br /&gt;Desktop [ALP]:                             Address Lookup&lt;br /&gt;Desktop [IPPP]:                           MDS Info for web browsing&lt;br /&gt;Desktop [BrowserConfig]:          MDS Info for web browser&lt;br /&gt;Desktop [OTASL]:                       Over the Air Software Loading (4.2 device OS or later)&lt;br /&gt;Provisioning [Provisioning]:     Enterprise Activation&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;&lt;br /&gt;If you got something broke, then you may be able to quickly resolve it by deleting / undeleting a service book from the Blackberry device itself.  This process regenerates / reconnects with the BES server in a magical way, requiring no server side intervention.  Here are two common issues you can maybe resolve this way:&lt;br /&gt;&lt;br /&gt;Wireless reconciliation such as read/unread marks, deletions not working, even though it says enabled from both server and device:  Kill and Resurrect the Desktop [CMIME]&lt;br /&gt;&lt;br /&gt;Address Book is not syncing, even though it says it is enabled from both server and device:  Kill and Resurrect the Desktop [SYNC]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-1631334863864645148?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/1631334863864645148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=1631334863864645148' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1631334863864645148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1631334863864645148'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/08/blackberry-service-books-bes-only.html' title='BlackBerry Service Books - BES only'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-2629891411229926747</id><published>2007-08-10T06:49:00.000-07:00</published><updated>2007-08-10T07:30:40.460-07:00</updated><title type='text'>Comcast Blocking Lotus Notes Attachments over 2MB</title><content type='html'>This is not related to Domino BES in any way, but thought I would share.  It appears that Comcast (at least in the Chicago area) has recently installed a blocking system in order to combat P2P traffic, which has the inadvertent effect of blocking Lotus Notes attachment uploads over 2MB.&lt;br /&gt;&lt;br /&gt;Using Lotus Notes with the internet passthrough, via a home Comcast cable IP connection, and trying to send any message over 2MB will result in a bunch of IP reset (RSET) commands sent by the Comcast blocking system which blocks the message from being sent.&lt;br /&gt;&lt;br /&gt;We have received 2 calls in the last week regarding this issue, and 4 other tech people with Comcast cable modems have confirmed that sending attachments over 2MB no longer works.  The error received is the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rrxu6iYwt2I/AAAAAAAAAHw/7bgvwJLoy8Y/s1600-h/Comcast1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rrxu6iYwt2I/AAAAAAAAAHw/7bgvwJLoy8Y/s320/Comcast1.JPG" alt="" id="BLOGGER_PHOTO_ID_5097070830218688354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;"Remote system no longer responding: [Server name] mail.box"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you try to send a message just under 2MB you might see the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/RrxvEyYwt3I/AAAAAAAAAH4/MhxG9SN8Xv0/s1600-h/Comcast2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/RrxvEyYwt3I/AAAAAAAAAH4/MhxG9SN8Xv0/s320/Comcast2.JPG" alt="" id="BLOGGER_PHOTO_ID_5097071006312347506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;"Mail was successfully submitted for delivery but a copy has not yet been saved in your mail file due to server not responding"&lt;br /&gt;&lt;br /&gt;Has anyone else received complaints from home / laptop Notes users about this issue?&lt;br /&gt;&lt;br /&gt;UPDATE:  This appears to be confirmed by a posting at www.dslreports.com which discusses Comcast's use of a filtering product called "Sandvine":&lt;br /&gt;&lt;br /&gt;http://www.dslreports.com/forum/r18323368-Comcast-is-using-Sandvine-to-manage-P2P-Connections&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-2629891411229926747?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/2629891411229926747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=2629891411229926747' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2629891411229926747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2629891411229926747'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/08/comcast-blocking-lotus-notes.html' title='Comcast Blocking Lotus Notes Attachments over 2MB'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qhSyRnKgVC8/Rrxu6iYwt2I/AAAAAAAAAHw/7bgvwJLoy8Y/s72-c/Comcast1.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-37187394100130349</id><published>2007-08-02T12:51:00.000-07:00</published><updated>2007-08-02T13:22:36.516-07:00</updated><title type='text'>BlackBerry Date/Time Source Explained</title><content type='html'>You have three options of how to get the Date/Time synchronized automatically on the BlackBerry:&lt;br /&gt;&lt;br /&gt;1. Set it to &lt;span style="font-weight: bold;"&gt;BlackBerry &lt;/span&gt;(the default), which gathers the information from the BlackBerry network, i.e. the RIM NOC.&lt;br /&gt;&lt;br /&gt;There is some confusion about this, let's clear it up right now.  Setting this to BlackBerry does not mean you have to set the date/time yourself &lt;span style="font-style: italic;"&gt;on the BlackBerry&lt;/span&gt;.  It does not mean that it gets the time from Desktop Manager when you cradle / sync.  (that is so 2005 anyways, it's all wireless now baby!) It means that you get the date/time directly from RIM over the air, that's it.  Here is the debug log lines from the device when you click Update Time:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;guid:0x1295B4AADE149AFC time: Thu Aug 02 15:12:08 2007  severity:5 type:2 app:net.rim.timesync data:SynR&lt;br /&gt;guid:0x1295B4AADE149AFC time: Thu Aug 02 15:12:08 2007  severity:0 type:2 app:net.rim.timesync data:Send&lt;br /&gt;guid:0x1295B4AADE149AFC time: Thu Aug 02 15:12:10 2007  severity:0 type:2 app:net.rim.timesync data:Recv&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;2. Set it to &lt;span style="font-weight: bold;"&gt;Network&lt;/span&gt;, which gathers the information from the wireless carrier network, whether AT&amp;T, T-Mobile, Verizon, Rogers, O2, Vodafone, etc.  Here is the debug log lines from the device when you do this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;guid:0x1295B4AADE149AFC time: Thu Aug 02 15:15:55 2007  severity:5 type:2 app:net.rim.timesync data:SynR&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Interestingly, when you click Update Time with the Network setting, it just copies the date/time recorded under "Network Time" and "Network Date", instead of directly querying the carrier network.  I assume this "Network Time" is regularly synced through some background mobile radio process.&lt;br /&gt;&lt;br /&gt;3. Set if to &lt;span style="font-weight: bold;"&gt;Off&lt;/span&gt;, which does not gather any info. You set it and maintain it yourself.&lt;br /&gt;&lt;br /&gt;Please note that, as I explained in my prior post, none of these settings will update the time zone you are in to the local time zone when you travel.  None of them.  Stop trying to change from Network to BlackBerry and back and clicking "Update Time" over and over again.  It just won't do it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-37187394100130349?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/37187394100130349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=37187394100130349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/37187394100130349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/37187394100130349'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/08/blackberry-datetime-source-explained.html' title='BlackBerry Date/Time Source Explained'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-9110059265807901968</id><published>2007-08-02T12:18:00.000-07:00</published><updated>2007-08-02T12:51:46.641-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='timezone'/><category scheme='http://www.blogger.com/atom/ns#' term='blackberry'/><category scheme='http://www.blogger.com/atom/ns#' term='automatic'/><title type='text'>Automatic TimeZone Switching for BlackBerry</title><content type='html'>The Motorola Q does it, the Treo does it, the Razr does it... and yet NO BlackBerry does it.  What am I talking about?  The seemingly obvious and basic cellular phone function of automatically switching the time zone for you while you travel.&lt;br /&gt;&lt;br /&gt;This does not require internal GPS, as the other phones do not have/need it and yet have gotten their location / time zone directly from the network they attach to for years.&lt;br /&gt;&lt;br /&gt;Now I have seen multiple discussions on the forums complaining/questioning about this feature, where "switchers" to BlackBerry just can't understand how to enable this feature on their BlackBerry... it is such an obvious feature that they think they are stupid and don't know how to get it to work, rather than the ridiculous notion that maybe this feature does not exist on the BlackBerry!&lt;br /&gt;&lt;br /&gt;Arguments about setting the Date/Time source to Network vs. BlackBerry, the use of GPS, GPS not required, A-GPS vs internal GPS, it is just an endless circular conversation I have seen over and over with little resolution.&lt;br /&gt;&lt;br /&gt;There have been justifications floated around that since the BlackBerry is a multifunction device, not just a phone, that the calendar items would be off whenever you traveled to a new time zone, causing mass confusion.  For this reason they left it to the user to manually change the time zone.&lt;br /&gt;&lt;br /&gt;This makes little sense to me, in that it might cause me mass confusion to have my calendar appointment times off from the local time I am in!  In any case, RIM could even leave it to the user by default, &lt;span style="font-style: italic;"&gt;but at least put it there as an option to turn on&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;My theory on this, using no background information at all, is that RIM simply does not trust the wireless carrier networks to provide an accurate time zone setting from their networks.  If one of the carriers passes out bad time zone data and messes up someone's entire calendar then RIM would be blamed.  That is just a theory on my part, but that fear does not necessitate leaving out even the *option* of enabling this feature on the device.&lt;br /&gt;&lt;br /&gt;So at WES a few months back I came armed with a couple of questions I was going to get answers to... one of them being this issue.  The people I talked to - who granted were not the go to handheld development  people - did not express any sort of justification for leaving the functionality off.  In fact, they expressed the idea that "Yeah, that makes sense, we should look into enabling a feature like that."&lt;br /&gt;&lt;br /&gt;There must be a back story I am missing here, there must have been some conversation about this at some conference table at some time in the 5 years since the first BlackBerry phone was released.  Can someone enlighten me... please?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-9110059265807901968?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/9110059265807901968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=9110059265807901968' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/9110059265807901968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/9110059265807901968'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/08/automatic-timezone-switching-for.html' title='Automatic TimeZone Switching for BlackBerry'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-2550156164102424494</id><published>2007-07-23T08:26:00.000-07:00</published><updated>2007-07-24T06:15:40.459-07:00</updated><title type='text'>Dedicated Attachment Service Gotcha</title><content type='html'>Early on we decided to separate our attachment service onto it's own dedicated server in order to offload that work from the BES servers.  So now all 3 production BES servers point to this one attachment server.&lt;br /&gt;&lt;br /&gt;One thing I noticed early on is that the BES servers cannot re-attach to the attachment server automatically.  That is, if you restart the attachment server/service, &lt;span style="font-style: italic;"&gt;attachment decoding will fail for all BlackBerry users until the associated BES task is restarted on all the associated BES servers&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The connection to the remote attachment server is handled within the BES Domino task, and the first time it connects upon startup, the BES task creates a special ID associated with that server's connection.  When the attachment server is restarted, that connection ID no longer exists and the attachment server will reject decode requests from the BES server.&lt;br /&gt;&lt;br /&gt;It is a simple fix (restarting BES task), but disruptive and can cause headaches during our monthly maintenance window - I have to always remember to restart the attachment server &lt;span style="font-weight: bold;"&gt;first &lt;/span&gt;before any of the BES servers are restarted.&lt;br /&gt;&lt;br /&gt;This issue occurred in the 4.0 environment however it would be interesting to see if it still occurs in the 4.1 environment.  When I find out I will post an update, however I haven't seen any SDR's addressing this issue as of yet.&lt;br /&gt;&lt;br /&gt;One more thing to watch out for in a complex distributed BES environment!&lt;br /&gt;&lt;br /&gt;UPDATE 7/24/07: It appears that this issue was addressed in 4.1 SP4, so no more reboot juggling required!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-2550156164102424494?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/2550156164102424494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=2550156164102424494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2550156164102424494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2550156164102424494'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/07/dedicated-attachment-service-gotcha.html' title='Dedicated Attachment Service Gotcha'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-4252288220759317372</id><published>2007-06-20T06:14:00.000-07:00</published><updated>2007-06-20T06:22:42.309-07:00</updated><title type='text'>Thinking of removing your DST software config?  Read this...</title><content type='html'>Thinking that this was no longer a large issue, I nonchalantly removed the DST software config from ~1300 users last week.  About a few hours later I get some inquiries from the regional offices to the effect of:&lt;br /&gt;&lt;br /&gt;"We had some people call about receiving a 'Permission's restrictions need to be updated, do you want to restart your device now or later' prompt on their handheld.  They accepted it and the device restarted, but I had never seen this before, what is it?"&lt;br /&gt;&lt;br /&gt;This is the "Oh s***" moment, when you realize that something seemingly innocuous had directly impacted each and every user you modified in bulk.&lt;br /&gt;&lt;br /&gt;You could say this was pretty minor, their functionality was fine and all they needed to do was restart the device, but that type of stuff doesn't fly in our environment.  Everything that directly impacts the user requires a change control approval process.&lt;br /&gt;&lt;br /&gt;Time to move the function "unapply software configuration" from daily administrative task to change-controlled lockdown!&lt;br /&gt;&lt;br /&gt;Apparently this happens when you initially followed RIM's recommendation and created a specific software policy for DST which allowed external communications.  Removing this software policy reverts it back to some default policy which requires a restart, hence the user prompt.&lt;br /&gt;&lt;br /&gt;Oh well, live and learn. (...and share the pain!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-4252288220759317372?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/4252288220759317372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=4252288220759317372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/4252288220759317372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/4252288220759317372'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/06/thinking-of-removing-your-dst-software.html' title='Thinking of removing your DST software config?  Read this...'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-5133086769368286291</id><published>2007-06-19T12:53:00.000-07:00</published><updated>2007-06-19T12:56:14.383-07:00</updated><title type='text'>Lotus Domino TimeDate Structure</title><content type='html'>This structure is used in many places within Domino, such as creation / modification times as well as database and replica ID's. Here is a diagram showing just what nuggets of interesting information are stored in this critical Notes data structure:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rng0n5twmHI/AAAAAAAAAHE/7vy2nWIgTWE/s1600-h/TimeDateStructure.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rng0n5twmHI/AAAAAAAAAHE/7vy2nWIgTWE/s320/TimeDateStructure.JPG" alt="" id="BLOGGER_PHOTO_ID_5077866439972526194" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-5133086769368286291?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/5133086769368286291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=5133086769368286291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/5133086769368286291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/5133086769368286291'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/06/lotus-domino-timedate-structure.html' title='Lotus Domino TimeDate Structure'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qhSyRnKgVC8/Rng0n5twmHI/AAAAAAAAAHE/7vy2nWIgTWE/s72-c/TimeDateStructure.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-2788415341721638588</id><published>2007-06-05T09:20:00.000-07:00</published><updated>2007-06-05T13:08:12.201-07:00</updated><title type='text'>Analysis:  "Transaction Error: Failure at Service"</title><content type='html'>Had this error pop up on a handheld today when trying to send from the device, got the dreaded red X.  Receiving messages, however, was fine.  Usually this boils down to one of a couple of issues:&lt;br /&gt;&lt;br /&gt;1) BES server issue&lt;br /&gt;2) Carrier issue&lt;br /&gt;3) Service Book issue&lt;br /&gt;&lt;br /&gt;Since the BES was fine and the carrier seemed to be OK for other users, it must have been a Service Book issue.  Tried deleting and then undeleting the &lt;span style="font-style: italic;"&gt;Desktop [CMIME]&lt;/span&gt; service book, didn't work. Tried deleting the &lt;span style="font-style: italic;"&gt;Desktop [CMIME]&lt;/span&gt; service book, then pushing service books from the BES.  Didn't work.  Since lookups were also having a problem, I theorized that the odds of 2 service books (lookups are the &lt;span style="font-style: italic;"&gt;Desktop [ALP]&lt;/span&gt; service book) getting corrupted was pretty small, so time to move onto the next possible culprit.&lt;br /&gt;&lt;br /&gt;To take the carrier out of the picture, I hooked the device up to USB so that the messages would be sent using the BlackBerry Router over USB / LAN, totally bypassing the wireless carrier and thus getting that variable out of the picture.&lt;br /&gt;&lt;br /&gt;Well I still got the Red X.  Hmmm.... but this time it did not specify "&lt;span style="font-style: italic;"&gt;Failure at Service&lt;/span&gt;".  This time the sub-error was "&lt;span style="font-style: italic;"&gt;Decryption Failure&lt;/span&gt;".  Interesting: so now we are getting down to the root of the problem and I can definitely say it is not the carrier or the service books.&lt;br /&gt;&lt;br /&gt;So I check the Dispatcher logs, since it is responsible for encryption/decryption to the device, and voila:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;[30368] (06/05 10:41:18):{0xFC0} {User} Packet has been delivered to device, Tag=4758107&lt;br /&gt;[40700] (06/05 10:41:44):{0xD8} {User} Receiving packet from device, size=127, TransactionId=1429352292, Tag=259213, content type=ITADMIN, cmd=0x3&lt;br /&gt;[20209] (06/05 10:41:44):{0xD8} {User} DecryptDecompress() failed, Tag=259213, Error=604&lt;br /&gt;[40275] (06/05 10:41:44):{0xD8} {User} Sending transaction error to device for transaction 1429352292, size=46, TransactionId=-966799068, Tag=4758202&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;So now I know it is an encryption issue, so let's generate a new key:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;[40700] (06/05 11:05:13.616):{0x1468} {User} Receiving packet from device, size=225, TransactionId=1429352316, Tag=7143787, content type=OTAKEYGEN, cmd&lt;br /&gt;=0x3&lt;br /&gt;[30222] (06/05 11:05:13.616):{0x1468} {User} MFH: contentType=OTAKEYGEN, sizeOTA=180, sizeOTW=180, TransactionId=1429352316, Tag=7143787&lt;br /&gt;[30308] (06/05 11:05:13.616):{0x1468} [BIPPa] {User} Forwarding data to BES Agent (S45776843), size=218, intTag=1911024, Tag=7143787&lt;br /&gt;[30311] (06/05 11:05:13.616):{0x1438} {User} Forwarding status to relay, intTag=1911024, Tag=7143787, Status=1&lt;br /&gt;[40279] (06/05 11:05:13.616):{0x1438} {User} SubmitToRelaySendQ, Tag=7143787&lt;br /&gt;[30222] (06/05 11:05:13.616):{0x1288} {User} MTH: contentType=OTAKEYGEN, sizeOTA=14, sizeOTW=14, TransactionId=-2070675455, Tag=6675317&lt;br /&gt;[30310] (06/05 11:05:13.616):{0x1288} {User} Forwarding internal data to device, contentType=OTAKEYGEN, routing=S45776843, device=23F7A64F, size=55, cm&lt;br /&gt;d=0x3, ack=0, TransactionId=-2070675455, intTag=7486040, Tag=6675317, Submit=1&lt;br /&gt;[40279] (06/05 11:05:13.616):{0x1288} {User} SubmitToRelaySendQ, Tag=6675317&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Well it looks like it didn't do much, let's go back to the MAGT log and see what it did during this same time period:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;[40076] (06/05 11:05:13.616):{0x920} {User} SendStatusToWirelessNetworkUsingSRP SendQ, TID=1911024&lt;br /&gt;[40400] (06/05 11:05:13.616):{0x920} {User} Received datagram with content type OTAKEYGEN, TID=1911024, for user User&lt;br /&gt;[40386] (06/05 11:05:13.616):{0x920} {User} {User} Sending message to device, Size=49, TID=7486040, TransactionId=-2070675455&lt;br /&gt;[40081] (06/05 11:05:13.616):{0x920} {User} SendToWirelessNetworkUsingSRP - SendQ, TID=7486040&lt;br /&gt;[30591] (06/05 11:05:13.616):{0x920} {User} {User} *** Activation *** transaction aborted.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK, so it looks like when trying to generate an encryption key from the device, it goes through a mini Activation, however it aborts the activation, I am guessing, because it can't establish encryption with the device.  So it's a catch-22.&lt;br /&gt;&lt;br /&gt;Let's hook it up to the USB cable and provision the device &amp; see what happens, theoretically this should just so the same things - resend the service books and regenerate the key - but do it over the wire.  Let's look at the MAGT logs:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;[30615] (06/05 11:09:33.130):{0x920} {User} Received RPC command [ProvisionUser] (id=1666)&lt;br /&gt;[40000] (06/05 11:09:33.130):{0x920} {User} Synchronizing user configuration&lt;br /&gt;[40000] (06/05 11:09:33.130):{0x920} {User} Synchronizing device capabilities&lt;br /&gt;[40000] (06/05 11:09:33.161):{0x920} {User} ProvisionUser: Updated handheld capabilities info&lt;br /&gt;[40000] (06/05 11:09:33.161):{0x920} {User} ProvisionUser: Handheld capabilities indicate AES encryption is supported&lt;br /&gt;[40000] (06/05 11:09:33.161):{0x920} {User} ProvisionUser: Using key type AES&lt;br /&gt;[40000] (06/05 11:09:33.161):{0x920} {User} Synchronizing AES encryption keys&lt;br /&gt;[30000] (06/05 11:09:33.192):{0x920} {User} *** Activation *** User activated; triggering message pre-population&lt;br /&gt;[30616] (06/05 11:09:33.192):{0x920} {User} RPC command [ProvisionUser] successful (id=1666)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Everything looks OK there, and now we can do lookups and send mail just fine.&lt;br /&gt;&lt;br /&gt;What is different about the USB provisioning?  Ideally I would like to be able to fix these types of problems OTA, in case someone is out of the office.  I don't like the idea of having to hook up to the BES Manager and provision via USB to fix.  Anybody out there know anything I could have tried OTA before hooking up to USB, without having to go through a full wireless enterprise activation?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-2788415341721638588?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/2788415341721638588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=2788415341721638588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2788415341721638588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/2788415341721638588'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/06/analysis-transaction-error-failure-at.html' title='Analysis:  &quot;Transaction Error: Failure at Service&quot;'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-6755471619204581092</id><published>2007-05-30T13:24:00.001-07:00</published><updated>2008-07-15T10:45:08.338-07:00</updated><title type='text'>BES 4.x Out of Office Agent Integration Breaks when Mailfile owner set to Editor in ACL (Update: Fixed in 4.1 SP5!!!)</title><content type='html'>Do you use the Out of Office functionality that is integrated into the BlackBerry? It's a wonderful feature, unless you have followed IBM's recommendations on security and limited your mailfile access to Editor.&lt;br /&gt;&lt;br /&gt;How could this possibly affect the Out of Office agent usage from the BlackBerry you ask?  Well let me tell you it took me quite awhile to figure this out.  I'll start from the beginning.&lt;br /&gt;&lt;br /&gt;The Out of Office agent is an agent that runs in your mailfile, and when enabled responds to people who send you mail while you are out.  In versions of Domino prior to R6 "Manager" mailfile access was required in order to enable this agent.  A specific field "$AssistFlags" in the agent was set to "E" to signify that the agent was enabled, and the "E" was removed from this field to signify that the agent was disabled.&lt;br /&gt;&lt;br /&gt;For Domino R6 and later, however, a mechanism was put into place which allowed an organization to ratchet down user level access to Editor, which tightened up security and also reduced helpdesk calls about users deleting their own mailfiles and other ridiculous things that happen when users have too much power.&lt;br /&gt;&lt;br /&gt;However, with Editor access users would no longer be able to enable / disable their out of office agents. A workaround was developed - a complex one which I will try not to go into here in too much detail - which allowed for the AdminP process to assign this access to the user.  This involved adding a field called "$AssistFlags2" (creative, no?) to the agent.&lt;br /&gt;&lt;br /&gt;The purpose of this flag was to tell R6 clients and above whether the agent was enabled or disabled, regardless of whether the "E" was in the older "$AssistFlags" field.  New agent icons were added, so now instead of seeing only a checkmark to signify enabled or a red circle-X to signify disabled, you would now see an additional "check-5" icon.&lt;br /&gt;&lt;br /&gt;This "check-5" icon signifies that the agent is &lt;span style="font-weight: bold; font-style: italic;"&gt;enabled &lt;/span&gt;for R5 and below, but &lt;span style="font-style: italic; font-weight: bold;"&gt;disabled&lt;/span&gt; for R6 and above!  Yes I know this is ridiculous but that is how software coding is sometimes.&lt;br /&gt;&lt;br /&gt;The fields would be set as follows (you can ignore the small "s" in $AssistFlags, I am not sure what that is for but appears to be unrelated to the agent status):&lt;br /&gt;&lt;br /&gt;$AssistFlags = Es&lt;br /&gt;$AssistFlags2 = D&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rl77iGhYXUI/AAAAAAAAAGg/ez80BblwyxU/s1600-h/Check-5.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rl77iGhYXUI/AAAAAAAAAGg/ez80BblwyxU/s400/Check-5.JPG" alt="" id="BLOGGER_PHOTO_ID_5070766793750502722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rl72qWhYXOI/AAAAAAAAAFw/16e9n76XAoY/s1600-h/Check-5Flags.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rl72qWhYXOI/AAAAAAAAAFw/16e9n76XAoY/s320/Check-5Flags.JPG" alt="" id="BLOGGER_PHOTO_ID_5070761437926284514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;These field settings mean that the agent is disabled for R6 and later, who know to check the $AssistFlags2 field for the &lt;span style="font-style: italic;"&gt;real&lt;/span&gt; status, but enabled for prior versions that didn't know about the $AssistFlags2 field and ignored it, using the "E" in $AssistFlags.&lt;br /&gt;&lt;br /&gt;The problem here is that the BES server acts as if it were an R5 or prior Notes client in this regard.  When enabling or disabling the agent, it adds or removes an "E" from the $AssistFlags field, and completely ignores the $AssistFlags2 field.&lt;br /&gt;&lt;br /&gt;Assuming the AdminP process has run properly the first time and setup your Editor level OOO agent access, the consequences of this are the following:&lt;br /&gt;&lt;br /&gt;1) OOO is currently disabled, the agent icon shows a "check-5", and the fields are set to :&lt;br /&gt;&lt;br /&gt;$AssistFlags = Es&lt;br /&gt;$AssistFlags2 = D&lt;br /&gt;&lt;br /&gt;2) A user enables the OOO agent from the BlackBerry.  The BES server attempts to set the $AssistFlags field to "E", sees that it is already there, and then does nothing.  The BES server does not, however, remove the "D" from $AssistFlags2, so we have the same result:&lt;br /&gt;&lt;br /&gt;$AssistFlags = Es&lt;br /&gt;$AssistFlags2 = D&lt;br /&gt;&lt;br /&gt;The R6 Domino Mail server will use the "D" value and not run the agent, the Lotus Notes R6 client will also see the "D" value and show the agent as disabled, &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;yet &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;the BlackBerry shows that it is enabled&lt;/span&gt;. So we have a remote user who thinks the agent is activated, gets back into the office 2 weeks later, and discovers that it never sent a single message out.  Bad!&lt;br /&gt;&lt;br /&gt;Another issue comes into play as well, in the following sequence of events:&lt;br /&gt;&lt;br /&gt;1) OOO is currently disabled, the agent icon shows a "check-5", and the fields are set to :&lt;br /&gt;&lt;br /&gt;$AssistFlags = Es&lt;br /&gt;$AssistFlags2 = D&lt;br /&gt;&lt;br /&gt;2) OOO is enabled by the Lotus Notes R6 client, which leaves the $AssistFlags field alone but removes the $AssistFlags2 field.  This change now shows the agent icon as a "check", and the fields are set to:&lt;br /&gt;&lt;br /&gt;$AssistFlags = Es&lt;br /&gt;[$AssistFlags2 field deleted]&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rl77nmhYXVI/AAAAAAAAAGo/AY9DnkuFiYc/s1600-h/Check.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rl77nmhYXVI/AAAAAAAAAGo/AY9DnkuFiYc/s400/Check.JPG" alt="" id="BLOGGER_PHOTO_ID_5070766888239783250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rl73VGhYXQI/AAAAAAAAAGA/NP0QwdJC-Gw/s1600-h/CheckFlags.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rl73VGhYXQI/AAAAAAAAAGA/NP0QwdJC-Gw/s320/CheckFlags.JPG" alt="" id="BLOGGER_PHOTO_ID_5070762172365692162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) A user disables the OOO agent from the BlackBerry. The BES server removes the "E" from the $AssistFlags field, however it does NOT create/populate the $AssistFlags2 field with a "D" to tell R6 clients that the agent is disabled.&lt;br /&gt;&lt;br /&gt;$AssistFlags = s&lt;br /&gt;[$AssistFlags2 field still missing]&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rl77sWhYXWI/AAAAAAAAAGw/GB1fqOX7tEg/s1600-h/RedX.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rl77sWhYXWI/AAAAAAAAAGw/GB1fqOX7tEg/s400/RedX.JPG" alt="" id="BLOGGER_PHOTO_ID_5070766969844161890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/Rl74Z2hYXRI/AAAAAAAAAGI/0wK5IK5MZFo/s1600-h/RedXFlags.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/Rl74Z2hYXRI/AAAAAAAAAGI/0wK5IK5MZFo/s320/RedXFlags.JPG" alt="" id="BLOGGER_PHOTO_ID_5070763353481698578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) The next time the user enables the OOO agent using the Lotus Notes R6 client, an interesting thing will happen, it will kick off the AdminP process once again to enable the agent for Editor level access.  You see the familiar blue text and the enabling of the agent requires a delay to implement.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rl75DGhYXTI/AAAAAAAAAGY/wDFro4rX-zA/s1600-h/OOOInProgress.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rl75DGhYXTI/AAAAAAAAAGY/wDFro4rX-zA/s320/OOOInProgress.JPG" alt="" id="BLOGGER_PHOTO_ID_5070764062151302450" border="0" /&gt;&lt;/a&gt;I believe it does this because the BES, when disabling the agent, for some unknown reason also clears the "Run on Behalf of" field, which is needed to allow the agent to run as the user:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rl8EEGhYXXI/AAAAAAAAAG4/6NsFdE6BrRs/s1600-h/ROBOField.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rl8EEGhYXXI/AAAAAAAAAG4/6NsFdE6BrRs/s320/ROBOField.JPG" alt="" id="BLOGGER_PHOTO_ID_5070776173959077234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In addition to this, when AdminP finally processes the request, grants the access, and enables the agent, the BES server &lt;span style="font-weight: bold; font-style: italic;"&gt;does not pick up this change&lt;/span&gt;, for reasons which escape me at this point.&lt;br /&gt;&lt;br /&gt;So the result of this sequence is an OOO agent that is enabled on the mail server, shows as enabled on the R6 Notes client, &lt;span style="font-weight: bold; font-style: italic;"&gt;but shows as disabled on the BlackBerry device&lt;/span&gt;.  This is also bad.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is what I believe needs to be done to resolve these issues:&lt;br /&gt;&lt;br /&gt;1) Modify the BES server logic such that it acts like an R6 client, that is aware of the $AssistFlags2 field and modifies it instead of (or in addition to) the outdated R5 $AssistFlags field.  Of course this might necessitate the minimum Domino mail server level be at R6 or higher, but since we are coming up on R8 and even R6 support is expiring, I don't see this as a huge issue.&lt;br /&gt;&lt;br /&gt;2) Ensure the BES server logic does not clear the "Run on Behalf Of" agent field when disabling the OOO agent.&lt;br /&gt;&lt;br /&gt;3) Ensure that changes made to the OOO agent by the AdminP process are picked up by the BES server, such that the Domino Mail Server/Notes Client and the BlackBerry device are always in sync as to the status of the OOO agent.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Until these issues are addressed, I see no easy way of programmatically blocking my users from using the OOO functionality on the BlackBerry device, which results in the above issues.  My last resort is to send a mass email saying that the BlackBerry OOO feature (which people love) is broken and to always use the Notes client.  Unfortunately this will result in higher helpdesk calls, since we always have people leave the office who forget to enable their OOO and end up calling us to enable it for them.&lt;br /&gt;&lt;br /&gt;If anyone out there can shed additional light on this issue or possible workarounds, feel free to let me know.  I am also actively working on this with RIM, and hope to have it recreated in their environment and logged as an SDR so that it may be addressed in a future service pack.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-6755471619204581092?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/6755471619204581092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=6755471619204581092' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6755471619204581092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6755471619204581092'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/05/bes-4x-out-of-office-agent-integration.html' title='BES 4.x Out of Office Agent Integration Breaks when Mailfile owner set to Editor in ACL (Update: Fixed in 4.1 SP5!!!)'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qhSyRnKgVC8/Rl77iGhYXUI/AAAAAAAAAGg/ez80BblwyxU/s72-c/Check-5.JPG' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-7770403691244051474</id><published>2007-05-30T08:40:00.000-07:00</published><updated>2007-05-31T07:35:21.899-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Policy'/><category scheme='http://www.blogger.com/atom/ns#' term='GPS'/><title type='text'>GPS Reporting to BES Server in 4.1 SP3 IT Policy</title><content type='html'>Upon upgrading to 4.1 SP3, I noticed that the IT Policy has a new Policy Group named "Location Based Services". Under this new group are the following options:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rl7ZaWhYXMI/AAAAAAAAAFg/_J4F_61nKSc/s1600-h/GPS.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rl7ZaWhYXMI/AAAAAAAAAFg/_J4F_61nKSc/s320/GPS.JPG" alt="" id="BLOGGER_PHOTO_ID_5070729277211172034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Disable BlackBerry Maps: (Default: False, Requires: Device code 4.0.0 and higher)&lt;br /&gt;&lt;br /&gt;Enable Enterprise Location Tracking: (Default: False, Requires: Device code 4.2.1 and higher)&lt;br /&gt;&lt;br /&gt;Enterprise Location Tracking User Prompt: (Default: "Your Location is now being tracked at the server", Requires: Device code 4.0.0 and higher)&lt;br /&gt;&lt;br /&gt;Enterprise Location Tracking Interval: (Default: 15 Minutes, Requires: Device code 4.2.1 and higher)&lt;br /&gt;&lt;br /&gt;I was very excited to see these built in options, which allow tracking via GPS without having to purchase a third party solution.  I enabled the tracking, leaving the interval set to 15 minutes, but changing the apparently mandatory notification to "Please call (312) XXX-XXXX to return this device."  This serves the purpose of providing some sort of notification, but not letting the user know that their device location is being tracked.  I named this policy "Device Tracker" so that I can use this to locate stolen devices, it is not used as a general purpose policy.&lt;br /&gt;&lt;br /&gt;I then applied this policy to single user who uses a BlackBerry 8800 device at code level 4.2.1.  Everything works great... except for the fact that I have no idea where the GPS information is logged to on the BES server.  I would suspect the SQL server in a device related table, but cannot find anything.&lt;br /&gt;&lt;br /&gt;I have asked RIM and am awaiting a response... I guess they are not sure either where this information is stored.  Once this tiny issue is sorted out I am going to have some fun with Google Maps mashups, making tracking lost or stolen devices that much easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-7770403691244051474?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/7770403691244051474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=7770403691244051474' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/7770403691244051474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/7770403691244051474'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/05/gps-reporting-to-bes-server-in-41-sp3.html' title='GPS Reporting to BES Server in 4.1 SP3 IT Policy'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qhSyRnKgVC8/Rl7ZaWhYXMI/AAAAAAAAAFg/_J4F_61nKSc/s72-c/GPS.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-8312642554165656543</id><published>2007-05-25T07:40:00.000-07:00</published><updated>2007-06-01T12:30:31.037-07:00</updated><title type='text'>BES Domino 4.0 / 4.1 Interoperability Issues - Updated 6/1/07</title><content type='html'>&lt;span id="intelliTXT"&gt;I upgraded one of my main BES servers to 4.1 SP3 HF1 last weekend, but left the other two at 4.0 SP6 HF4. Since the DB Schema was upgraded, we needed to upgrade all of our BB Manager workstations to 4.1 as well.&lt;br /&gt;&lt;br /&gt;Now, we are seeing an issue where, using the locally installed 4.1 Manager, we cannot provision a new user added to one of the 4.0 servers using the USB cable. The service books get assigned but the rest of activation / synchronization / prepopulation does not kick off. Wireless activation of new users on the 4.0 servers also seems erratic.&lt;br /&gt;&lt;br /&gt;BTW, this upgrade was performed after getting the word at WES that 4.0 and 4.1 servers sharing the same SQL database is OK, since they have many larger accounts than ours and they can't expect them to upgrade 10's of servers at the same time.&lt;br /&gt;&lt;br /&gt;Well apparently it is OK for existing users but not newly added users! RIM's tech's response now is: Well it can work but it is not recommended, and the "workaround" is to upgrade the remaining servers to 4.1.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="intelliTXT"&gt;&lt;span style="font-weight: bold;"&gt;Update 6/1/07&lt;/span&gt;:  Apparently the tech I spoke with on this issue was incorrect, RIM verifies that they fully support a mixed 4.0/4.1 environment as they told me at WES just a few weeks ago.  This issue with USB activation has to do with an identified bug in the 4.1 SP3 BlackBerry Manager console, which is fixed in the upcoming 4.1 SP4, but also can be worked around by downgrading to the 4.1 SP2 Manager console.  Thanks to RIM for clarifying this for me.&lt;br /&gt;&lt;/span&gt;&lt;span id="intelliTXT"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-8312642554165656543?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/8312642554165656543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=8312642554165656543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8312642554165656543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8312642554165656543'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/05/bes-domino-40-41-interoperability.html' title='BES Domino 4.0 / 4.1 Interoperability Issues - Updated 6/1/07'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-4147200554844750484</id><published>2007-05-25T07:17:00.000-07:00</published><updated>2007-05-25T07:39:02.329-07:00</updated><title type='text'>BlackBerry ID Numbers... MOST of them</title><content type='html'>BlackBerry devices are multifunction, convergence devices.  This being the case, they have multiple methods for identifying the different parts that make up the device.  Here is a guide to the different serial / ID numbers used by the different components that make up the BlackBerry device:&lt;br /&gt;&lt;br /&gt;Model: 4 digits + letter, tied to hardware, identifies hardware type (digits / letter) &amp;amp; carrier (letter)&lt;br /&gt;&lt;br /&gt;PIN (Personal Identification Number): 8 Hex characters, tied to hardware, used for routing within the RIM network&lt;br /&gt;&lt;br /&gt;IMEI (International Mobile Equipment Identity): 15 digits, tied to hardware, used to identify a&lt;br /&gt;GSM device&lt;br /&gt;&lt;br /&gt;Phone Number: Variable, tied to SIM card, used for voice calling (duh)&lt;br /&gt;&lt;br /&gt;IMSI (International Mobile Subscriber Identity): 19 digits, tied to SIM card, used to identify a particular carrier account&lt;br /&gt;&lt;br /&gt;FCC ID (Federal Communications Commission ID): 9 alpha digits (starts with L6A for RIM), tied to hardware, used to register wireless device with government agency&lt;br /&gt;&lt;br /&gt;BT MAC (Bluetooth Media Access Control): 6 Hex pairs, tied to hardware, used to identify Bluetooth personal area network device&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-4147200554844750484?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/4147200554844750484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=4147200554844750484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/4147200554844750484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/4147200554844750484'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/05/blackberry-id-numbers-all-of-them.html' title='BlackBerry ID Numbers... MOST of them'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-4717655582542856703</id><published>2007-05-25T07:12:00.000-07:00</published><updated>2007-05-25T07:16:12.573-07:00</updated><title type='text'>Missing Device Phone Number fields in BB Manager</title><content type='html'>&lt;span id="intelliTXT"&gt;This is a simple question that has devolved into a mini research project ( like so many do!)&lt;br /&gt;&lt;br /&gt;We are trying to reconcile carrier billing info with active BlackBerry users, and are finding many SIM card accounts we are paying data plans for but we don't know who is using the device or where it is.&lt;br /&gt;&lt;br /&gt;I use the BB Manager to find devices by carrier phone number which is easy most of the time, however many accounts (229 out of 1905 or about 12%) do not have the "phone number" field populated in BB Manager, these are the accounts I am trying to track down.&lt;br /&gt;&lt;br /&gt;Results so far:&lt;br /&gt;&lt;br /&gt;1. I have discovered that the "My Number:" field at the top of the Phone app pulls directly from the SIM card's "Phone number" field. If present in the Phone app display, the "My Number:" field then populates the BB Manager account "Phone Number" field in the SQL database.&lt;br /&gt;&lt;br /&gt;2. Interestingly, this field can be user edited via Options / Advanced / SIM Card / Edit SIM Phone Number. Also interestingly, it appears to be a &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;display field only&lt;/span&gt; and does not change the phone number that the SIM card actually uses&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;3. Normally this SIM Card "Phone Number" field is populated by the carrier during the provisioning process, and before they ship the SIM Card out. In some cases, however, they sloppily forget this step which results in a missing SIM card field, and thus an "Unknown Number" on the Phone app display, &lt;b&gt;however &lt;/b&gt;the SIM &amp; voice calling work just fine, as again the true number is encoded into the SIM and unrelated to the "Phone Number" SIM display field.&lt;br /&gt;&lt;br /&gt;4. It is easy enough for the end user to edit and add their phone number if nonexistent, or change it if the number associated with the SIM is changed by the carrier.&lt;br /&gt;&lt;br /&gt;The issue for me is that I don't want to try to contact &gt;200 users and have them run through a manual process of adding this field with the proper number.  I am looking for an automated way of pushing it out.  There doesn't appear to be any hack for this, so I will have to contact the wireless carrier's and see if they have a solution.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-4717655582542856703?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/4717655582542856703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=4717655582542856703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/4717655582542856703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/4717655582542856703'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/05/missing-device-phone-number-fields-in.html' title='Missing Device Phone Number fields in BB Manager'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-943890526769807156</id><published>2007-04-16T09:46:00.001-07:00</published><updated>2007-04-16T10:50:29.044-07:00</updated><title type='text'>BES SQL Permissions Explained - Part 3</title><content type='html'>In this post we will discuss the necessary SQL permissions to allow administrative access to the BES database, as well as the new role based administration features in 4.1.&lt;br /&gt;&lt;br /&gt;First, let's create a new SQL login named 'bbadmin' with no server roles or database access or database roles.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/RiOpFuStHeI/AAAAAAAAADg/RM6glXsiC5Y/s1600-h/besadmin.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/RiOpFuStHeI/AAAAAAAAADg/RM6glXsiC5Y/s320/besadmin.JPG" alt="" id="BLOGGER_PHOTO_ID_5054069122630753762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now, what happens when we try to use this login and password from a remote BlackBerry Manager console?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/RiOpj-StHfI/AAAAAAAAADo/qfShFgnV3ww/s1600-h/besadminerror.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/RiOpj-StHfI/AAAAAAAAADo/qfShFgnV3ww/s320/besadminerror.JPG" alt="" id="BLOGGER_PHOTO_ID_5054069642321796594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;[20000] (04/16 11:50:20.563):{0x150} COM Error 0x80004005 in ConnectionItem::ConnectToDB() - Cannot open database requested in login 'BESMgmt'. Login fails. - Unspecified error (connection string- -Provider=SQLOLEDB;Server=SQLTEST000;Database=BESMgmt;uid=bbadmin;pwd=)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;So now let's give Permit access to the BES database.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/RiOqLeStHgI/AAAAAAAAADw/larlubiqz8A/s1600-h/besadminpermit.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/RiOqLeStHgI/AAAAAAAAADw/larlubiqz8A/s320/besadminpermit.JPG" alt="" id="BLOGGER_PHOTO_ID_5054070320926629378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And once again...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/RiOpj-StHfI/AAAAAAAAADo/qfShFgnV3ww/s1600-h/besadminerror.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/RiOpj-StHfI/AAAAAAAAADo/qfShFgnV3ww/s320/besadminerror.JPG" alt="" id="BLOGGER_PHOTO_ID_5054069642321796594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;[20000] (04/16 11:54:34.257):{0x4E0} [ODBCRecord::DoGetFirstValue] SQL error: [0x80040E09  SELECT permission denied on object 'ObjectDefn', database 'BESMgmt', owner 'dbo'.] Source: [Microsoft OLE DB Provider for SQL Server] SQL State: [42000] NativeError: [229]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Same error popup, but the logs tell a different story.  We get into the database but then have permissions issues when trying to do SQL calls.  Per the RIM documentation, administrators also need the 'rim_db_bes_server' database role in order to do their work.  So let's follow their advice and add that role to the account:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/RiOrYeStHhI/AAAAAAAAAD4/tK9NWa9tLt0/s1600-h/besadminrimdb.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/RiOrYeStHhI/AAAAAAAAAD4/tK9NWa9tLt0/s320/besadminrimdb.JPG" alt="" id="BLOGGER_PHOTO_ID_5054071643776556562" border="0" /&gt;&lt;/a&gt;And voila, we are in!&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/mahoward/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/RiOsSuStHiI/AAAAAAAAAEA/fQHGCBFTqk8/s1600-h/bbmgrempty.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/RiOsSuStHiI/AAAAAAAAAEA/fQHGCBFTqk8/s320/bbmgrempty.JPG" alt="" id="BLOGGER_PHOTO_ID_5054072644503936546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ummm, or are we?  Everything is empty here.  Not much to manage!  Interesting that we have 'Unknown Authority' listed at the top. Although the 'rim_db_bes_server' role was sufficient in v4.0 to manage the server, apparently things have changed in 4.1.&lt;br /&gt;&lt;br /&gt;New database roles were added in order to avoid giving full access to anyone that needed to do anything on the server.  Let's take a look at them:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/RiOuL-StHjI/AAAAAAAAAEI/Lc7v55eguOw/s1600-h/bbroles.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/RiOuL-StHjI/AAAAAAAAAEI/Lc7v55eguOw/s320/bbroles.JPG" alt="" id="BLOGGER_PHOTO_ID_5054074727563075122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;These are all the roles, the ones that have been added in 4.1 all start with 'rim_db_admin...'.  We can also ignore the 'audit' roles which are read-only and for training purposes only, which leaves us with:&lt;br /&gt;&lt;br /&gt;rim_db_admin_jr_helpdesk&lt;br /&gt;rim_db_admin_sr_helpdesk&lt;br /&gt;rim_db_admin_handheld&lt;br /&gt;rim_db_admin_enterprise&lt;br /&gt;rim_db_admin_security&lt;br /&gt;&lt;br /&gt;Let's first remove our legacy 'rim_db_bes_server' role, then add the 'rim_db_admin_jr_helpdesk' role and see what happens.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/RiOvx-StHkI/AAAAAAAAAEQ/yc4REHP_7Rg/s1600-h/bbmgr1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/RiOvx-StHkI/AAAAAAAAAEQ/yc4REHP_7Rg/s320/bbmgr1.JPG" alt="" id="BLOGGER_PHOTO_ID_5054076479909731906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Excellent, we have access now, and it even shows our authority level correctly at the top.  Let's move up to the 'rim_db_admin_sr_helpdesk' role and see if there is a difference.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/RiOyVuStHlI/AAAAAAAAAEY/42DCZP8ulu0/s1600-h/bbmgr2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/RiOyVuStHlI/AAAAAAAAAEY/42DCZP8ulu0/s320/bbmgr2.JPG" alt="" id="BLOGGER_PHOTO_ID_5054079293113310802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hmmm, the only obvious change is in the title bar, which reflects our promotion to Sr. Helpdesk.  Maybe there are some tasks now available in the menus, but nothing obvious.  Let's move up to the 'rim_db_admin_handheld' role.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/RiOy7eStHmI/AAAAAAAAAEg/1y_xP2ZEn4k/s1600-h/bbmgr3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/RiOy7eStHmI/AAAAAAAAAEg/1y_xP2ZEn4k/s320/bbmgr3.JPG" alt="" id="BLOGGER_PHOTO_ID_5054079941653372514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now we are getting somewhere, I can see a whole new tab 'Software Configurations' available.  Perhaps there are other subtasks available too.  Let's go ahead and switch to the 'rim_db_admin_enterprise' role.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/RiOzfOStHnI/AAAAAAAAAEo/KDMHlzVKDrM/s1600-h/bbmgr4.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/RiOzfOStHnI/AAAAAAAAAEo/KDMHlzVKDrM/s320/bbmgr4.JPG" alt="" id="BLOGGER_PHOTO_ID_5054080555833695858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The only difference now appears to be the addition of the MDS service under the 'Servers' leaf of the Explorer View tree on the left.  Perhaps we are now able to manage MDS with this new authority.  How about we now go to the ultimate, 'rim_db_admin_security'?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/RiO0RuStHpI/AAAAAAAAAE4/K5ykBLM0Mwo/s1600-h/bbmgr5.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/RiO0RuStHpI/AAAAAAAAAE4/K5ykBLM0Mwo/s320/bbmgr5.JPG" alt="" id="BLOGGER_PHOTO_ID_5054081423417089682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Wow, now I can see everything plus the Role Administration tab.  I guess now I can add people and assign/remove roles without having to use the SQL administration tools, let's try it out!  Why don't we first list the administrators that are in the 'rim_db_admin_security' role, it should just be ourselves, the 'bbadmin' account.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/RiO0n-StHqI/AAAAAAAAAFA/vmph3teGoPk/s1600-h/bbmgrerror.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/RiO0n-StHqI/AAAAAAAAAFA/vmph3teGoPk/s320/bbmgrerror.JPG" alt="" id="BLOGGER_PHOTO_ID_5054081805669179042" border="0" /&gt;&lt;/a&gt;Uh oh.  I thought we had the top level of access, what is going on here? I can't even list the members of a role?  Something is messed up.&lt;br /&gt;&lt;br /&gt;Oh, wait.  I seem to recall RIM saying that System Administrator (sysadmin) access on the SQL server is needed to perform role-based administration.  Ummm, well that is the highest level of access available on the SQL server, so I am sure the SQL team is going to be pretty uncomfortable with that, but it makes sense that we would need this access in order to manage SQL logins and database roles through the front end of the BlackBerry Manager, which is really what we are doing after all.  So let's go ahead and add 'sysadmin' server role to this account and try again.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/RiO2CuStHrI/AAAAAAAAAFI/rNw4aorwXVA/s1600-h/bbmgrroleadmin.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/RiO2CuStHrI/AAAAAAAAAFI/rNw4aorwXVA/s320/bbmgrroleadmin.JPG" alt="" id="BLOGGER_PHOTO_ID_5054083364742307506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;OK, so we have full access now, at the expense of an angry SQL admin team.  I guess I can forgo role based admin via BlackBerry manager, and have the SQL guys remove the 'sysadmin' server role.  That just means I will have to work with them to add logins &amp;amp; roles in the future, so I will be sure to get on their good side!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-943890526769807156?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/943890526769807156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=943890526769807156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/943890526769807156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/943890526769807156'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/04/bes-sql-permissions-explained-part-3.html' title='BES SQL Permissions Explained - Part 3'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qhSyRnKgVC8/RiOpFuStHeI/AAAAAAAAADg/RM6glXsiC5Y/s72-c/besadmin.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-8608991295001409942</id><published>2007-04-13T10:54:00.000-07:00</published><updated>2007-04-13T12:52:22.510-07:00</updated><title type='text'>BES SQL Permissions Explained - Part 2</title><content type='html'>In the last post we discussed the SQL Server roles required to create and configure the BES database on the SQL server.  In this post we will discuss the database permissions required by the login the BES server uses.&lt;br /&gt;&lt;br /&gt;First let's go back to our DbaMgr2k console and pull up the properties of the bbdbowner login, which was the SQL login we used to create the BESMgmt database. Now take a look at the Database access tab:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rh_MD-StHXI/AAAAAAAAACo/12SlHNQRjOU/s1600-h/DBaccessprops.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rh_MD-StHXI/AAAAAAAAACo/12SlHNQRjOU/s320/DBaccessprops.JPG" alt="" id="BLOGGER_PHOTO_ID_5052981675566112114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We can deduce a couple of things from this dialog:&lt;br /&gt;&lt;br /&gt;1) Our SQL login 'bbdbowner' has 'Permit' checked for access to the BESMgmt database.&lt;br /&gt;&lt;br /&gt;2) Our SQL login 'bbdbowner' is associated with the auto-created 'dbo' user of this database.  I still don't understand why you need separate database accounts linked to SQL logins, but hey, I'm a newbie at this.&lt;br /&gt;&lt;br /&gt;3) Our SQL login 'bbdbowner' has the 'public' database role assigned.  This is a built-in SQL role allowing basic database access.&lt;br /&gt;&lt;br /&gt;4) Our SQL login 'bbdbowner' has the 'db_owner' database role assigned.  This is a built-in SQL role allowing all operations on the database.  I guess we were assigned this role since we created the database.&lt;br /&gt;&lt;br /&gt;Now in most installations the same SQL login is used to:&lt;br /&gt;&lt;br /&gt;a) Initially create the database&lt;br /&gt;b) Authenticate BES servers&lt;br /&gt;c) Authenticate BES admins via the BlackBerry Manager console&lt;br /&gt;&lt;br /&gt;In order to clarify just what roles require what permissions, we will break out these separate functions into separate SQL logins.   We already have the 'bbdbowner' login which corresponds to a) above, the initial creation of the database.&lt;br /&gt;&lt;br /&gt;Let's now create a login 'bbserver' and see what permissions it needs to allow a BES server to operate.  First we will give it no permissions at all:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rh_Pn-StHYI/AAAAAAAAACw/Wp9bVF4svIk/s1600-h/bbserver.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rh_Pn-StHYI/AAAAAAAAACw/Wp9bVF4svIk/s320/bbserver.JPG" alt="" id="BLOGGER_PHOTO_ID_5052985592576286082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then we will use the BlackBerry Server Configuration panel to change the SQL authentication from the 'bbdbowner' account to the new 'bbserver' account:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh_RYOStHZI/AAAAAAAAAC4/O2d7ritQ1-o/s1600-h/serverconfig.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh_RYOStHZI/AAAAAAAAAC4/O2d7ritQ1-o/s320/serverconfig.JPG" alt="" id="BLOGGER_PHOTO_ID_5052987521016602002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-style: italic;"&gt;Note:  Using the above utility only changes the SQL login credentials used by the BlackBerry Windows services, which are located in:&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-style: italic;"&gt;HKEY_CURRENT_USER\Software\Research In Motion\BlackBerry Enterprise Server\Database&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-style: italic;"&gt;To change the SQL login used by the Domino BES task we need to also modify the 'Login' and 'Password' values located in:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-style: italic;"&gt;HKEY_USERS\.DEFAULT\Software\Research In Motion\BlackBerry Enterprise Server\Database&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;And here is the result when we click the 'Test SQL Server Connection' button:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rh_Rs-StHaI/AAAAAAAAADA/DNwWvLMLwq0/s1600-h/error.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rh_Rs-StHaI/AAAAAAAAADA/DNwWvLMLwq0/s320/error.JPG" alt="" id="BLOGGER_PHOTO_ID_5052987877498887586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;OK, I guess we need to add some permissions.  Let's start with at least adding 'Permit' access to the BESMgmt database...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh_S7OStHbI/AAAAAAAAADI/u0ojNCnQzzY/s1600-h/permit.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh_S7OStHbI/AAAAAAAAADI/u0ojNCnQzzY/s320/permit.JPG" alt="" id="BLOGGER_PHOTO_ID_5052989221823651250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;...and try again:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rh_THuStHcI/AAAAAAAAADQ/xVLyQd1UuUw/s1600-h/permitsuccess.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rh_THuStHcI/AAAAAAAAADQ/xVLyQd1UuUw/s320/permitsuccess.JPG" alt="" id="BLOGGER_PHOTO_ID_5052989436572016066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;OK, now that's a little better.  Let's try to start some BES services now and see what happens:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh_T1OStHdI/AAAAAAAAADY/Spgip3jhuhg/s1600-h/startservices.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh_T1OStHdI/AAAAAAAAADY/Spgip3jhuhg/s320/startservices.JPG" alt="" id="BLOGGER_PHOTO_ID_5052990218256063954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Oops, I am getting an error code 5608 when trying to start this service.  Interestingly, some other services started without error.  They must not need access to the SQL database.  Let's take a look:&lt;br /&gt;&lt;br /&gt;BlackBerry Alert - Started Successfully&lt;br /&gt;BlackBerry Attachment Service - Started Successfully&lt;br /&gt;BlackBerry Controller - Started Successfully&lt;br /&gt;BlackBerry Dispatcher - &lt;span style="font-weight: bold;"&gt;Failed with error code 5608&lt;/span&gt;&lt;br /&gt;BlackBerry MDS Connection Service - &lt;span style="font-weight: bold;"&gt;Started, then stopped a few minutes later&lt;/span&gt;&lt;br /&gt;BlackBerry Policy Service - &lt;span style="font-weight: bold;"&gt;Failed with error code 5003&lt;/span&gt;&lt;br /&gt;BlackBerry Router - Started Successfully&lt;br /&gt;BlackBerry Synchronization Service - &lt;span style="font-weight: bold;"&gt;Failed with error code 5203&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What happens when we try to start the BES Domino task?  Let's see...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;&gt; load bes&lt;br /&gt;&gt;               Cannot start database notification system&lt;br /&gt;04/13/2007 02:36:21 PM  Error initialising BES. Terminating.&lt;br /&gt;04/13/2007 02:36:21 PM  Shutting down Performance Monitoring and SNMP&lt;br /&gt;04/13/2007 02:36:21 PM  BlackBerry Mailbox Agent for Lotus Domino shutdown complete&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If we look in the Event Viewer we can see many entries which refer to 'permission denied', such as this when starting the BES task above:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;ReportEnvironmentDB::ReportDBSchemaVersion: COM Error 0x80040E09 - IDispatch error #3081 - Source: "Microsoft OLE DB Provider for SQL Server" - Description "SELECT permission denied on object 'ServerDBVersion', database 'BESMgmt', owner 'dbo'." - Command ""&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;...so I guess we need to go a little further than just 'Permit' &amp; 'public' role access to the BESMgmt database.  If we look further down the database role list, we can see that in addition to the built-in database roles, the BES database installation script created some custom roles as well.  One of these custom roles is called 'rim_db_bes_server', so let's assign that role as well, since it just makes sense.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;04/13/2007 02:38:40 PM  BlackBerry Mailbox Agent for Lotus Domino started&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ah, that's much better.  The other Windows services started up just fine too.  So we can determine from our little experiment that the following minimum SQL permissions are required in order for a BES server to operate:&lt;br /&gt;&lt;br /&gt;- SQL Server roles:  None required&lt;br /&gt;- BESMgmt database roles:  rim_db_bes_server&lt;br /&gt;&lt;br /&gt;Next: Minimum permissions for remote BES administration, and role-based security in 4.1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-8608991295001409942?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/8608991295001409942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=8608991295001409942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8608991295001409942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8608991295001409942'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/04/bes-sql-permissions-explained-part-2.html' title='BES SQL Permissions Explained - Part 2'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qhSyRnKgVC8/Rh_MD-StHXI/AAAAAAAAACo/12SlHNQRjOU/s72-c/DBaccessprops.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-8863410850506204078</id><published>2007-04-12T12:10:00.000-07:00</published><updated>2007-04-12T13:22:30.088-07:00</updated><title type='text'>BES SQL Permissions Explained - Part 1</title><content type='html'>In the last post we talked about setting up a test environment to mimic a production BES  / SQL environment. In this post we will talk about the actual SQL server permissions required to create or upgrade a BES management database.&lt;br /&gt;&lt;br /&gt;If this is an initial install, then the BES management database will most likely be automatically created and configured via the BES installation program. However, there is a pre-requisite:  If using SQL authentication like we are, we need to have a SQL login defined on the SQL server with the appropriate permissions.&lt;br /&gt;&lt;br /&gt;Using our DbaMgr2k tool, we first:&lt;br /&gt;&lt;br /&gt;1. Double click on our SQL Server to open the Connection window.  Type in the password for the default 'sa' account and click the checkbox to 'Save password'.  We are using SQL authentication so you can leave the 'Trusted NT Connection' blank.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh6FWeStHNI/AAAAAAAAABY/-mTFsZp6Pl4/s1600-h/connect.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh6FWeStHNI/AAAAAAAAABY/-mTFsZp6Pl4/s320/connect.JPG" alt="" id="BLOGGER_PHOTO_ID_5052622453091409106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. If you click on Logins you can see that there are only 2 users setup by default.  One is the 'sa' account we used, and the other is the NT Builtin\Administrators group. Although we are using SQL authentication this account should not be removed.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rh6HH-StHOI/AAAAAAAAABg/SirglDCLV0E/s1600-h/Logins.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rh6HH-StHOI/AAAAAAAAABg/SirglDCLV0E/s320/Logins.JPG" alt="" id="BLOGGER_PHOTO_ID_5052624403006561506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Right click on Logins and select New Login. This new user will be the account we use in the BES installation to create and configure the BES database. Be sure to type in a password and click 'Save' before configuring any other settings; a little quirk of our free tool.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rh6HwOStHPI/AAAAAAAAABo/8SVHFWh8tPs/s1600-h/NewLogin.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rh6HwOStHPI/AAAAAAAAABo/8SVHFWh8tPs/s320/NewLogin.JPG" alt="" id="BLOGGER_PHOTO_ID_5052625094496296178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Click on the 'Server Roles' tab and check the 'serveradmin' role and the 'dbcreator' role.  These roles give the login account permission to create new databases and do other server wide tasks. For now we can ignore the 'Database access' tab, as there is no BES database created yet.  Click 'Save' and then 'Close' to save and exit.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh6RXeStHVI/AAAAAAAAACY/h8O0FmZXsBE/s1600-h/NewLoginServerRoles.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh6RXeStHVI/AAAAAAAAACY/h8O0FmZXsBE/s320/NewLoginServerRoles.JPG" alt="" id="BLOGGER_PHOTO_ID_5052635664410811730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. Now from our BES install, we connect to the SQL server using these credentials, and we are prompted to create the database.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rh6SE-StHWI/AAAAAAAAACg/nR6azf27R08/s1600-h/BESCreateDB.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/Rh6SE-StHWI/AAAAAAAAACg/nR6azf27R08/s320/BESCreateDB.JPG" alt="" id="BLOGGER_PHOTO_ID_5052636446094859618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/Rh6MNuStHSI/AAAAAAAAACA/j4TZXaNTss8/s1600-h/BESCreateDBPrompt.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/Rh6MNuStHSI/AAAAAAAAACA/j4TZXaNTss8/s320/BESCreateDBPrompt.JPG" alt="" id="BLOGGER_PHOTO_ID_5052629999348948258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh6OyeStHUI/AAAAAAAAACQ/zt5BAOC8Su4/s1600-h/BESCreateDBOK.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh6OyeStHUI/AAAAAAAAACQ/zt5BAOC8Su4/s320/BESCreateDBOK.JPG" alt="" id="BLOGGER_PHOTO_ID_5052632829732396354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just for fun, let's see what happens when the SQL login does not have the&lt;br /&gt;'serveradmin' role assigned.  Of course, we get the dreaded error message:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rh6MVOStHTI/AAAAAAAAACI/4P0dWjAzels/s1600-h/BESCreateDBError.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_qhSyRnKgVC8/Rh6MVOStHTI/AAAAAAAAACI/4P0dWjAzels/s320/BESCreateDBError.JPG" alt="" id="BLOGGER_PHOTO_ID_5052630128197967154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But what actually fails?  Lets check the installer logs to find out:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;[30000] (04/12 14:55:19.192):{0x33C} SQL being executed:&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt; EXEC sp_addmessage @msgnum = 60002, @severity = 16, &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;    @msgtext = N'Unable to add new BlackBerry Agent "%s" AgentID=%d Machine Name=%s', &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;    @lang = 'us_english'&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;/* BESRouter errors */&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;IF EXISTS (SELECT error FROM sysmessages&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;        WHERE error = 60103)&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;    EXEC sp_dropmessage @msgnum = 60103, @lang = 'us_english'&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;[20000] (04/12 14:55:19.192):{0x33C} SQL Error Message from CBESDBInstaller::ExecuteSql.executeDirect: SQLSTATE: 42000 Native error: 15247 Message: User does not have permission to perform this action.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Looks like the DB installer script was unable to add custom BES error messages to the SQL server.&lt;br /&gt;&lt;br /&gt;How about the other way around, the SQL Login has 'serveradmin' permissions but not 'dbcreator'?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;[20000] (04/12 14:49:17.952):{0x12C} SQL Error Message from CBESDBInstaller::ExecuteSql.executeDirect: SQLSTATE: 42000 Native error: 262 Message: CREATE DATABASE permission denied in database 'master'.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;In this case the DB installer script could not even create the BES DB and failed immediately.  Looks like we need both roles in order to create or upgrade the database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now that we have the database created and understand the SQL Server roles required, the next post will examine the database roles required for daily server functioning and administrative tasks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-8863410850506204078?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/8863410850506204078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=8863410850506204078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8863410850506204078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8863410850506204078'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/04/bes-sql-permissions-explained-part-1.html' title='BES SQL Permissions Explained - Part 1'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qhSyRnKgVC8/Rh6FWeStHNI/AAAAAAAAABY/-mTFsZp6Pl4/s72-c/connect.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-1253004987391730796</id><published>2007-04-12T06:55:00.000-07:00</published><updated>2007-04-12T07:55:45.207-07:00</updated><title type='text'>BES SQL Permissions Explained - Part 0</title><content type='html'>I work for a large law firm, so each department is separate, even within IT.  When we upgraded from 2.2 to 4.0 I needed to work with our SQL folks to setup and host the new SQL DB for the BES servers.&lt;br /&gt;&lt;br /&gt;This coordination can be difficult, especially since I know little about the operation of SQL server and had difficulty communicating what I needed.  It doesn't help that RIM's documentation about SQL permissions is conflicting in many cases, and dependent upon which version of 4.x you are running, as well as which components are being installed.  Ugh!&lt;br /&gt;&lt;br /&gt;This post will attempt to decode the mystery of SQL server permissions for a BES Domino environment.  Here in part zero (zero b/c I don't actually talk about permissions yet!) I will discuss setting up a test environment for exploring how these parts work together to begin with.&lt;br /&gt;&lt;br /&gt;In order to get the skinny on all of this, I had to hack together a test environment that mimicked a production BES / SQL install.  I did this by:&lt;br /&gt;&lt;br /&gt;1) Installing the free Microsoft Virtual PC software. (Free!)&lt;br /&gt;2) Creating 3 Win2K SP4 virtual machines; two BES 4.0 servers and a SQL server&lt;br /&gt;&lt;br /&gt;I used Win2K b/c there are no messy issues with online activation required, I reused some old keys I had written on the CD's.  Since this is a test environment I don't feel too bad about that.&lt;br /&gt;&lt;br /&gt;Not having access to the SQL server code or management tools, however, I had to improvise, which was an exercise in itself.  From the BES 4.1 installation media, I installed the MSDE database engine (tools\SQLRun01.msi) on my "SQL" virtual server.  I then performed the following to turn it into an almost gen-u-ine SQL server:&lt;br /&gt;&lt;br /&gt;1) Change the default 'sa' password from NULL to something else&lt;br /&gt;&lt;br /&gt;To do this you need to use the command line OSQL tool which allows you to run SQL scripts from a command prompt.  For this I used the following commands:&lt;br /&gt;&lt;br /&gt;osql -E&lt;br /&gt;1&gt; exec sp_password @old = null, @new = 'newpassword',  @loginame = 'sa' &lt;br /&gt;2&gt; go&lt;br /&gt;Password changed.&lt;br /&gt;1&gt; exit&lt;br /&gt;&lt;br /&gt;This runs a &lt;span style="font-weight:bold;"&gt;S&lt;/span&gt;tored &lt;span style="font-weight:bold;"&gt;P&lt;/span&gt;rocedure called 'sp_password' on the SQL server itself to change the password. Make sure to spell 'loginame' with only one 'n'!&lt;br /&gt;&lt;br /&gt;2) Change the authentication mode from default of "Windows" authentication to "Mixed" authentication. &lt;br /&gt;&lt;br /&gt;Note that you can have two authentication modes in MSDE / SQL:&lt;br /&gt;&lt;br /&gt; - NT only using AD or local Windows users / groups (Windows)&lt;br /&gt; - NT + SQL where logins are managed with SQL itself (Mixed)&lt;br /&gt;&lt;br /&gt;Note that you cannot have just SQL authentication by itself.&lt;br /&gt;&lt;br /&gt;What this change does is allow native SQL logins to access the SQL server, so I don't have to worry about ugly NT users / groups / permissions.  I find SQL authentication easier and cleaner to manage and make sense of in my head.  For this we need to:&lt;br /&gt;&lt;br /&gt;- Stop the MSSQLSERVER service&lt;br /&gt;- Change HKLM\Software\Microsoft\MSSqlserver\MSSqlServer\LoginMode from 1 to 2&lt;br /&gt;- Restart the MSSQLSERVER service&lt;br /&gt;&lt;br /&gt;3) Enable network access to the "SQL" server&lt;br /&gt;&lt;br /&gt;By default MSDE is only useful for applications local to the machine it is installed on.  Changing this allows remote machines on the network to access the MSDE SQL server just like it's big brother.&lt;br /&gt;&lt;br /&gt;- Stop the MSSQLSERVER service&lt;br /&gt;- Open command prompt&lt;br /&gt;- Run 'svrnetcn'&lt;br /&gt;- Click 'TCP/IP' and click 'Enable'&lt;br /&gt;- Click 'Named Pipes' and click 'Enable'&lt;br /&gt;- Click OK&lt;br /&gt;- Restart the MSSQLSERVER service&lt;br /&gt;&lt;br /&gt;4) Test login over the network.&lt;br /&gt;&lt;br /&gt;- Copy the OSQL.EXE utility to another machine on the network&lt;br /&gt;- From a command prompt, run OSQL -S [hostname or IP] -U sa -P newpassword&lt;br /&gt;- You should get a '1&gt;' prompt, meaning you are connected to the server.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OK, so now we have a working, network accessible SQL server.  How do we manage it without learning all the arcane OSQL syntax and SQL stored procedures?  Fortunately there is a free management tool out there called "DBAMgr2K".  Google this name and you should be able to find the website and download it.&lt;br /&gt;&lt;br /&gt;It is basically a free, simple version of SQL Enterprise Manager for use with MSDE databases.  It is great because it acts and displays very similarly to the real SQL Enterprise Manager, so when I was comfortable operating this tool, I could tell the SQL guys exactly what to do in EM to get the same result in our production environment.&lt;br /&gt;&lt;br /&gt;Next up: Permissions details for BES SQL databases&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-1253004987391730796?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/1253004987391730796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=1253004987391730796' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1253004987391730796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1253004987391730796'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/04/bes-sql-permissions-explained-part-0.html' title='BES SQL Permissions Explained - Part 0'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-5568748747514025252</id><published>2007-03-19T09:07:00.000-07:00</published><updated>2007-03-19T09:35:27.086-07:00</updated><title type='text'>Decoding BlackBerry Server NSD Logs</title><content type='html'>Even though I've tried to optimize my environment to the best of my ability, I will still occasionally see the dreaded Fault report that one of my BES servers has crashed.  If this happens to you, here is how you can decode the NSD log that Domino creates and track it back to what BES was doing at the time.  In some situations - not all - this can help you figure out what is going on and resolve it yourself instead of waiting for a log file analysis from RIM.&lt;br /&gt;&lt;br /&gt;For example, I just happen to have an NSD log from a crash that happened this morning. These crash files can be found in the "Lotus\Domino\Data\IBM_TECHNICAL_SUPPORT" directory of your data partition. The NSD log file is name something like this:&lt;br /&gt;&lt;br /&gt;nsd_W32I_[YOUR SERVER NAME]_2007_03_18@21_15_02.log&lt;br /&gt;&lt;br /&gt;In my experience, most of the relevant information can be gleaned from the first page full of information.  The first thing we want to look for is the following line right near the top:&lt;br /&gt;&lt;br /&gt;Arguments       : "c:\lotus\domino\nsd.exe" -dumpandkill -termstatus 5 -crashpid 4592 -crashtid 3252&lt;br /&gt;&lt;br /&gt;The most important information is the "-crashtid 3252" portion, which indicates that the thread ID that caused the crash is 3252 decimal. Well if you remember, the BlackBerry log files record the thread ID for every operation, however they are encoded in Hex.  So using calc we convert 3252 decimal = CB4 Hex.&lt;br /&gt;&lt;br /&gt;With the thread ID known, lets parse the BES MAGT log for the thread ID CB4.  I use the line "grep 'xCB4' [logfile name]"  The final line of this thread process is this:&lt;br /&gt;&lt;br /&gt;[40000] (03/18 20:42:38):{0xCB4} CN=XXXX/OU=XXXX/O=XXXX!!mail\XXXX.nsf, fetching modified documents since 03/18/2007 08:42:37 PM for user XXXX&lt;br /&gt;&lt;br /&gt;Of course identifying information has been removed to protect the innocent, however this appears to be the last thing this thread did before the server crashed.  I think we have our culprit mailfile.&lt;br /&gt;&lt;br /&gt;So now I open the mailfile and look in the All Documents view, and discover there is a Sent Item from guess what time?  That's right: 03/18/2007 08:42:37 PM.   Could this be our culprit document?  It appears to be a reply, initiated from the device, to an email that contains a large bitmap in the body.&lt;br /&gt;&lt;br /&gt;To verify, I check the NoteID; it is "1C542".  If I now do a search on "1C542" in the NSD file I find the following lines:&lt;br /&gt;&lt;br /&gt;@[22] 0x6001f146 nnotes._NSFNoteOpenExtended@24+678 (71,1c542,4080000,0,35b4eb34,17)&lt;br /&gt;@[23] 0x6003d3b7 nnotes._NSFNoteOpen@16+55 (71,1c542,0,35b4f7d0)&lt;br /&gt; [24] 0x0058ab01 nBES (6a033c,5f,71,1c542) - SYM FILE OUTDATED!&lt;br /&gt; [25] 0x0058f2d4 nBES (1c542,0,0,d4683b3) - SYM FILE OUTDATED!&lt;br /&gt;       # 35b4f310  35b4f7d0 00000000 0001c542 0bd1a0e4  |...5....B.......|&lt;br /&gt;@[22] 0x6001f146 nnotes._NSFNoteOpenExtended@24+678 (71,1c542,4080000,0,35b4eb34,17)&lt;br /&gt;       # 35b4f354  35b4f380 6003d3b7 00000071 0001c542  |...5...`q...B...|&lt;br /&gt;       # 35b4f374  0001c542 35b4f7d0 00000010 35b4f5ac  |B......5.......5|&lt;br /&gt;@[23] 0x6003d3b7 nnotes._NSFNoteOpen@16+55 (71,1c542,0,35b4f7d0)&lt;br /&gt;       # 35b4f380  35b4f5ac 0058ab01 00000071 0001c542  |...5..X.q...B...|&lt;br /&gt;       # 35b4f560  35b4f5c4 0058f993 0001c542 35b4f7c8  |...5..X.B......5|&lt;br /&gt; [24] 0x0058ab01 nBES (6a033c,5f,71,1c542) - SYM FILE OUTDATED!&lt;br /&gt;       # 35b4f5bc  00000071 0001c542 00000000 35b4f7d0  |q...B..........5|&lt;br /&gt;       # 35b4f61c  00000002 0d44e858 00475182 0001c542  |....X.D..QG.B...|&lt;br /&gt; [25] 0x0058f2d4 nBES (1c542,0,0,d4683b3) - SYM FILE OUTDATED!&lt;br /&gt;       # 35b4f620  0d44e858 00475182 0001c542 00000000  |X.D..QG.B.......|&lt;br /&gt;       # 35b4f700  0001c542 0d2e7b15 1f7957bc 00096573  |B....{...Wy.se..|&lt;br /&gt;       # 35b4f7d0  00003306 0001c542 00000001 00000000  |.3..B...........|&lt;br /&gt;@[22] 0x6001f146 nnotes._NSFNoteOpenExtended@24+678 (71,1c542,4080000,0,35b4eb34,17)&lt;br /&gt;@[23] 0x6003d3b7 nnotes._NSFNoteOpen@16+55 (71,1c542,0,35b4f7d0)&lt;br /&gt;       # 35b4f7d0  00003306 0001c542 00000001 00000000  |.3..B...........|&lt;br /&gt; [24] 0x0058ab01 nBES (6a033c,5f,71,1c542) - SYM FILE OUTDATED!&lt;br /&gt; [25] 0x0058f2d4 nBES (1c542,0,0,d4683b3) - SYM FILE OUTDATED!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It looks like NBES was trying to open this Note using the NSFNoteOpen and NSFNoteOpenExtended API calls when it crashed the server.  So now I am sure this note caused the crash.  What now?  Delete the note from the user's mailfile so that it now resides in the trash, then restart the BES server.  Of course you want to let the user know why their message is in the trash, and of course follow up on RIM on why this happened in the first place.  But at least you have the server back up!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-5568748747514025252?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/5568748747514025252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=5568748747514025252' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/5568748747514025252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/5568748747514025252'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/03/decoding-blackberry-server-nsd-logs.html' title='Decoding BlackBerry Server NSD Logs'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-6482297707558201814</id><published>2007-03-16T13:26:00.000-07:00</published><updated>2007-03-16T13:40:15.296-07:00</updated><title type='text'>Moves between Servers - Not 100% foolproof</title><content type='html'>I moved over 500 accounts from an old BES server to a new BES server today.  I set the expectation with our regional managers and BB admins that there would be no impact to end users during this migration.  How could I be so naive?&lt;br /&gt;&lt;br /&gt;First, a minor amount of users were not able to send or send &amp; receive after the move, and required either pushing the service books, reactivation, or complete account removal and re-add / re-activate to get working again.  This is not so bad, it is a small number (&lt;20 probably) of 500 people.&lt;br /&gt;&lt;br /&gt;The bigger problem was this:  The source (old) BES server's "Blackberry Synchronization Service" would sometimes freak out during bulk moves.  I would move maybe 50 people at a time max, but apparently that was too much for the sync service to handle.  So it would just quit, and I would have to restart it.  I also noticed that the initial moves went really fast, a few per minute, but then they started to bog down and it would take 5 minutes to move one account.&lt;br /&gt;&lt;br /&gt;That is no big deal, until I realized by looking through the logs what was happening: the sync service contains the device backup service, and it was going through and deleting the backup data not only for the accounts being moved, but FOR EVERY USER ON THE SERVER: (names removed to protect the innocent)&lt;br /&gt;&lt;br /&gt;[46036] (03/14 10:15:41):{0xC50} [SYNC-Gate] Start removing user. [W&lt;br /&gt;[46036] (03/14 10:15:41):{0xC50} [SYNC-Gate] Start removing user. [R&lt;br /&gt;[46036] (03/14 10:15:42):{0xC50} [SYNC-Gate] Start removing user. [Z&lt;br /&gt;[46036] (03/14 10:15:42):{0xC50} [SYNC-Gate] Start removing user. [O&lt;br /&gt;[46036] (03/14 10:15:43):{0xC50} [SYNC-Gate] Start removing user. [S&lt;br /&gt;[46036] (03/14 10:15:43):{0xC50} [SYNC-Gate] Start removing user. [H&lt;br /&gt;[46036] (03/14 10:15:44):{0xC50} [SYNC-Gate] Start removing user. [K&lt;br /&gt;[46036] (03/14 10:15:44):{0xC50} [SYNC-Gate] Start removing user. [D&lt;br /&gt;[46036] (03/14 10:15:45):{0xC50} [SYNC-Gate] Start removing user. [G&lt;br /&gt;[46036] (03/14 10:15:45):{0xC50} [SYNC-Gate] Start removing user. [B&lt;br /&gt;[46036] (03/14 10:15:46):{0xC50} [SYNC-Gate] Start removing user. [D&lt;br /&gt;[46036] (03/14 10:15:46):{0xC50} [SYNC-Gate] Start removing user. [O&lt;br /&gt;[46036] (03/14 10:15:47):{0xC50} [SYNC-Gate] Start removing user. [S&lt;br /&gt;[46036] (03/14 10:15:48):{0xC50} [SYNC-Gate] Start removing user. [R&lt;br /&gt;[46036] (03/14 10:15:48):{0xC50} [SYNC-Gate] Start removing user. [A&lt;br /&gt;[46036] (03/14 10:15:48):{0xC50} [SYNC-Gate] Start removing user. [C&lt;br /&gt;[46036] (03/14 10:15:49):{0xC50} [SYNC-Gate] Start removing user. [F&lt;br /&gt;[46036] (03/14 10:15:49):{0xC50} [SYNC-Gate] Start removing user. [N&lt;br /&gt;[46036] (03/14 10:15:50):{0xC50} [SYNC-Gate] Start removing user. [R&lt;br /&gt;[46036] (03/14 10:15:50):{0xC50} [SYNC-Gate] Start removing user. [W&lt;br /&gt;[46036] (03/14 10:15:51):{0xC50} [SYNC-Gate] Start removing user. [B&lt;br /&gt;[46036] (03/14 10:15:51):{0xC50} [SYNC-Gate] Start removing user. [G&lt;br /&gt;[46036] (03/14 10:15:52):{0xC50} [SYNC-Gate] Start removing user. [A&lt;br /&gt;[46036] (03/14 10:15:53):{0xC50} [SYNC-Gate] Start removing user. [P&lt;br /&gt;[46036] (03/14 10:15:53):{0xC50} [SYNC-Gate] Start removing user. [Z&lt;br /&gt;[46036] (03/14 10:15:54):{0xC50} [SYNC-Gate] Start removing user. [B&lt;br /&gt;[46036] (03/14 10:15:55):{0xC50} [SYNC-Gate] Start removing user. [L&lt;br /&gt;[46036] (03/14 10:15:58):{0xC50} [SYNC-Gate] Start removing user. [M&lt;br /&gt;&lt;br /&gt;Once this happened, it kicked off an OTA device backup, which once again sync'ed everything back from each device, which slowed down EVERYTHING.&lt;br /&gt;&lt;br /&gt;Now here is the worst part: many of the devices (with accounts that were not even scheduled to be moved that day) received either:&lt;br /&gt;&lt;br /&gt;1) An activation complete - OK prompt&lt;br /&gt;2) A continuing activation process&lt;br /&gt;3) A leftover activation icon on their ribbon (home screen).&lt;br /&gt;&lt;br /&gt;I started to get calls from admins in other cities, who weren't even scheduled to be moved that day.  Bad.&lt;br /&gt;&lt;br /&gt;Lesson: Don't move more than 10-20 accounts at a time, and watch the SYNC service.&lt;br /&gt;&lt;br /&gt;Oh, and by the way - the brand new server hardware I migrated to?  It crashed this morning. :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-6482297707558201814?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/6482297707558201814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=6482297707558201814' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6482297707558201814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6482297707558201814'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/03/moves-between-servers-not-100-foolproof.html' title='Moves between Servers - Not 100% foolproof'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-1069293498424239599</id><published>2007-03-07T08:37:00.000-08:00</published><updated>2007-03-07T09:54:16.468-08:00</updated><title type='text'>Gathering Wireless Vendor Info from the SQL DB</title><content type='html'>My manager asked for a report of the BlackBerry users and their associated wireless provider.  Given this is all stored in the BES SQL DB, it shouldn't be a problem to get the info - but there are some things to figure out before it works right:&lt;br /&gt;&lt;br /&gt;1. There are two fields in the BES SQL DB that refer to a wireless provider.  The first is the VendorID field, which specifies the actual maker of the BlackBerry device itself, regardless of what network it is currently connected to or roaming on.&lt;br /&gt;&lt;br /&gt;2. The second is the Home Network field, which actually doesn't make sense because it shows you which wireless network provider the device is connected to right now, so it may not actually be the home network, but a roaming partner.&lt;br /&gt;&lt;br /&gt;For example I have a user whose device is a T-Mobile device and their home network would obviously be T-Mobile, however they currently appear as Cingular under Home Network.&lt;br /&gt;&lt;br /&gt;To get these values out of the SQL DB we need a query, here is the one I use to pull the data into Excel:&lt;br /&gt;&lt;br /&gt;SELECT UserConfig.DisplayName, vHandheldSummaryInfo.VendorID, vHandheldSummaryInfo.HomeNetwork&lt;br /&gt;FROM BesConfig.dbo.UserConfig UserConfig, BesConfig.dbo.vHandheldSummaryInfo vHandheldSummaryInfo&lt;br /&gt;WHERE vHandheldSummaryInfo.PIN = UserConfig.PIN&lt;br /&gt;&lt;br /&gt;Note that you need to join these two tables in Microsoft Query using the PIN field, not the default "id" field that it starts with, otherwise your data won't match.  Haven't discovered why, perhaps their are two different id fields in the two tables.  Anyway, just use PIN because that is a common key that I know is unique.&lt;br /&gt;&lt;br /&gt;So once you run this query you get the user's Display Name, Vendor ID, and Home Network.  Now to get the device's carrier I need just the Vendor ID field but I like to see what Home Network people are on, it is interesting to see where your people are in the world and what unique names other wireless carriers have, such as "CCT Boatphone" (!).  (Apparently from the British Virgin Islands, but is it really for boats? a cruise ship? hmmm...)&lt;br /&gt;&lt;br /&gt;One final issue is that the Vendor ID is in decimal format, so I wasn't quite sure which was which.  The Home Network let me see which vendor ID matched up with which vendor name, but after doing a bunch of work for that I figured out that the vendor id's are stored in where else... the Vendors.xml file!&lt;br /&gt;&lt;br /&gt;While the Vendors.xml file did in fact contain all the matchings between vendor ID and vendor name, the id's in this file were in Hex format! :(  After a little hacking in Excel with the HEX2DEC formula, I came up with the following master table below of all vendors RIM supports:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border=1 cellpadding=1 cellspacing=1 align=center&gt;&lt;tr&gt;&lt;td align=center&gt;Hex (vendor.xml)&lt;/td&gt;&lt;td align=center&gt;Decimal (BES DB)&lt;/td&gt;&lt;td align=center&gt;Provider Name&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;64&lt;/td&gt;&lt;td align=center&gt;100&lt;/td&gt;&lt;td align=center&gt;T-Mobile US&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;65&lt;/td&gt;&lt;td align=center&gt;101&lt;/td&gt;&lt;td align=center&gt;AWS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;66&lt;/td&gt;&lt;td align=center&gt;102&lt;/td&gt;&lt;td align=center&gt;Cingular Wireless&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;67&lt;/td&gt;&lt;td align=center&gt;103&lt;/td&gt;&lt;td align=center&gt;Nextel&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;68&lt;/td&gt;&lt;td align=center&gt;104&lt;/td&gt;&lt;td align=center&gt;Sprint PCS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;69&lt;/td&gt;&lt;td align=center&gt;105&lt;/td&gt;&lt;td align=center&gt;Verizon&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;6B&lt;/td&gt;&lt;td align=center&gt;107&lt;/td&gt;&lt;td align=center&gt;Rogers&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;6D&lt;/td&gt;&lt;td align=center&gt;109&lt;/td&gt;&lt;td align=center&gt;BWA (Aliant/Sasktel)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;6F&lt;/td&gt;&lt;td align=center&gt;111&lt;/td&gt;&lt;td align=center&gt;MM02 DE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;71&lt;/td&gt;&lt;td align=center&gt;113&lt;/td&gt;&lt;td align=center&gt;Telfort&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;72&lt;/td&gt;&lt;td align=center&gt;114&lt;/td&gt;&lt;td align=center&gt;T-Mobile DE/AU&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;73&lt;/td&gt;&lt;td align=center&gt;115&lt;/td&gt;&lt;td align=center&gt;TIM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;74&lt;/td&gt;&lt;td align=center&gt;116&lt;/td&gt;&lt;td align=center&gt;Hutchison&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;75&lt;/td&gt;&lt;td align=center&gt;117&lt;/td&gt;&lt;td align=center&gt;Bouygues&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;76&lt;/td&gt;&lt;td align=center&gt;118&lt;/td&gt;&lt;td align=center&gt;SFR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;77&lt;/td&gt;&lt;td align=center&gt;119&lt;/td&gt;&lt;td align=center&gt;Orange_France&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;78&lt;/td&gt;&lt;td align=center&gt;120&lt;/td&gt;&lt;td align=center&gt;VODAFONE (UK)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;79&lt;/td&gt;&lt;td align=center&gt;121&lt;/td&gt;&lt;td align=center&gt;Telcel&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;7A&lt;/td&gt;&lt;td align=center&gt;122&lt;/td&gt;&lt;td align=center&gt;Telstra&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;7B&lt;/td&gt;&lt;td align=center&gt;123&lt;/td&gt;&lt;td align=center&gt;T-Mobile (UK)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;7C&lt;/td&gt;&lt;td align=center&gt;124&lt;/td&gt;&lt;td align=center&gt;Vodafone Germany&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;7D&lt;/td&gt;&lt;td align=center&gt;125&lt;/td&gt;&lt;td align=center&gt;MM02 UK/IRL/NL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;7E&lt;/td&gt;&lt;td align=center&gt;126&lt;/td&gt;&lt;td align=center&gt;Telus&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;7F&lt;/td&gt;&lt;td align=center&gt;127&lt;/td&gt;&lt;td align=center&gt;SMART&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;80&lt;/td&gt;&lt;td align=center&gt;128&lt;/td&gt;&lt;td align=center&gt;Starhub&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;81&lt;/td&gt;&lt;td align=center&gt;129&lt;/td&gt;&lt;td align=center&gt;Telefonica&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;82&lt;/td&gt;&lt;td align=center&gt;130&lt;/td&gt;&lt;td align=center&gt;Swisscom&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;83&lt;/td&gt;&lt;td align=center&gt;131&lt;/td&gt;&lt;td align=center&gt;Cable and Wireless&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;84&lt;/td&gt;&lt;td align=center&gt;132&lt;/td&gt;&lt;td align=center&gt;Vodafone (IT)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;85&lt;/td&gt;&lt;td align=center&gt;133&lt;/td&gt;&lt;td align=center&gt;Vodafone (ES)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;86&lt;/td&gt;&lt;td align=center&gt;134&lt;/td&gt;&lt;td align=center&gt;T-Mobile (NL)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;87&lt;/td&gt;&lt;td align=center&gt;135&lt;/td&gt;&lt;td align=center&gt;Cincinnati Bell&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;89&lt;/td&gt;&lt;td align=center&gt;137&lt;/td&gt;&lt;td align=center&gt;Vodafone Austria&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;8A&lt;/td&gt;&lt;td align=center&gt;138&lt;/td&gt;&lt;td align=center&gt;Vodafone  Australia&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;8B&lt;/td&gt;&lt;td align=center&gt;139&lt;/td&gt;&lt;td align=center&gt;Vodafone Ireland&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;8C&lt;/td&gt;&lt;td align=center&gt;140&lt;/td&gt;&lt;td align=center&gt;Vodafone Sweden&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;8D&lt;/td&gt;&lt;td align=center&gt;141&lt;/td&gt;&lt;td align=center&gt;CSL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;8E&lt;/td&gt;&lt;td align=center&gt;142&lt;/td&gt;&lt;td align=center&gt;Orange UK&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;8F&lt;/td&gt;&lt;td align=center&gt;143&lt;/td&gt;&lt;td align=center&gt;Vodafone New Zealand&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;90&lt;/td&gt;&lt;td align=center&gt;144&lt;/td&gt;&lt;td align=center&gt;SingTel&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;91&lt;/td&gt;&lt;td align=center&gt;145&lt;/td&gt;&lt;td align=center&gt;Globe&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;92&lt;/td&gt;&lt;td align=center&gt;146&lt;/td&gt;&lt;td align=center&gt;Optus&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;93&lt;/td&gt;&lt;td align=center&gt;147&lt;/td&gt;&lt;td align=center&gt;Orange Mobistar&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;95&lt;/td&gt;&lt;td align=center&gt;149&lt;/td&gt;&lt;td align=center&gt;Bharti&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;96&lt;/td&gt;&lt;td align=center&gt;150&lt;/td&gt;&lt;td align=center&gt;KPN&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;98&lt;/td&gt;&lt;td align=center&gt;152&lt;/td&gt;&lt;td align=center&gt;Proximus&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;99&lt;/td&gt;&lt;td align=center&gt;153&lt;/td&gt;&lt;td align=center&gt;Vodafone_Portugal&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;9B&lt;/td&gt;&lt;td align=center&gt;155&lt;/td&gt;&lt;td align=center&gt;BT_Mobile&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;9C&lt;/td&gt;&lt;td align=center&gt;156&lt;/td&gt;&lt;td align=center&gt;Earthlink&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;9E&lt;/td&gt;&lt;td align=center&gt;158&lt;/td&gt;&lt;td align=center&gt;E-Plus&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;9F&lt;/td&gt;&lt;td align=center&gt;159&lt;/td&gt;&lt;td align=center&gt;BASE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;A0&lt;/td&gt;&lt;td align=center&gt;160&lt;/td&gt;&lt;td align=center&gt;Dobson&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;A1&lt;/td&gt;&lt;td align=center&gt;161&lt;/td&gt;&lt;td align=center&gt;Vodafone_Egypt&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;A2&lt;/td&gt;&lt;td align=center&gt;162&lt;/td&gt;&lt;td align=center&gt;Orange_Switzerland&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;A4&lt;/td&gt;&lt;td align=center&gt;164&lt;/td&gt;&lt;td align=center&gt;Triton&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;A5&lt;/td&gt;&lt;td align=center&gt;165&lt;/td&gt;&lt;td align=center&gt;Maxis&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;A6&lt;/td&gt;&lt;td align=center&gt;166&lt;/td&gt;&lt;td align=center&gt;Vodafone_Denmark_(TDC)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;A7&lt;/td&gt;&lt;td align=center&gt;167&lt;/td&gt;&lt;td align=center&gt;MobileOne_(Voda_Singapore)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=center&gt;A8&lt;/td&gt;&lt;td align=center&gt;168&lt;/td&gt;&lt;td align=center&gt;Vodacom&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;So now I can run my SQL query and easily match up the vendor ID's in decimal with the vendor names from this table.  Cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-1069293498424239599?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/1069293498424239599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=1069293498424239599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1069293498424239599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/1069293498424239599'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/03/gathering-wireless-vendor-info-from-sql.html' title='Gathering Wireless Vendor Info from the SQL DB'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-7793274787526211816</id><published>2007-02-14T14:30:00.000-08:00</published><updated>2007-02-14T14:35:20.220-08:00</updated><title type='text'>Components of a NoteID</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/RdOOXvNYYKI/AAAAAAAAAAk/zwP5OWaEEjg/s1600-h/NotesIDs.bmp"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_qhSyRnKgVC8/RdOOXvNYYKI/AAAAAAAAAAk/zwP5OWaEEjg/s400/NotesIDs.bmp" alt="" id="BLOGGER_PHOTO_ID_5031521747163701410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a diagram of the components of a NoteID that I put together after trying to figure out just how the State Database correlates it's entries with that of the messages in the mailfile. Of course there is no information actually in the State DB entry - it tracks it by having &lt;span style="font-weight: bold;"&gt;exactly &lt;/span&gt;the same Universal ID as the mailfile note itself.&lt;br /&gt;&lt;br /&gt;Umm, ok...&lt;br /&gt;&lt;br /&gt;Two separate Notes having the same Universal ID?  Wasn't the idea that this ID was &lt;span style="font-style: italic;"&gt;Universal&lt;/span&gt;, as in no other identical ID in the known Universe? Oh well...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-7793274787526211816?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/7793274787526211816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=7793274787526211816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/7793274787526211816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/7793274787526211816'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/02/components-of-noteid.html' title='Components of a NoteID'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qhSyRnKgVC8/RdOOXvNYYKI/AAAAAAAAAAk/zwP5OWaEEjg/s72-c/NotesIDs.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-7730528203950475058</id><published>2007-01-09T14:16:00.000-08:00</published><updated>2007-01-09T14:35:15.757-08:00</updated><title type='text'>Knife-Edge Cutover for Domino BES</title><content type='html'>Here is a compilation of the steps required to do a knife-edge cutover (also called a forklift upgrade) to move a BES server over to new hardware. Disclaimer: I have not done this yet, I am compiling these steps for a future migration.  So there may be steps missing or just wrong.  But it may be useful as an initial starting point.&lt;br /&gt;&lt;br /&gt;1. Build new server with new windows server name and ip address.&lt;br /&gt;2. Stop Domino service on original server&lt;br /&gt;3. Copy the following files to the new server:&lt;br /&gt;    - d:\lotus\domino\data\server.id&lt;br /&gt;    - d:\lotus\domino\data\mdsservi.id&lt;br /&gt;    - d:\lotus\domino\data\names.nsf&lt;br /&gt;    - d:\lotus\domino\data\certlog.nsf&lt;br /&gt;    - d:\lotus\domino\data\BES\*.*&lt;br /&gt;4. Install Domino with same release and fixpack as original server (click Yes to any registry prompt)&lt;br /&gt;5. Copy the following file from the original server c:\lotus\domino\notes.ini&lt;br /&gt;6. Remove the BES task from startup in Notes.ini&lt;br /&gt;7. Set Lotus Domino service startup to Manual if not already&lt;br /&gt;6. Shut down original server completely and unplug from network&lt;br /&gt;7. Delete original server from Windows AD&lt;br /&gt;9. Change IP address on new server to old IP address&lt;br /&gt;8. Change name on new server to old server name&lt;br /&gt;9. Reboot server to have name change take effect&lt;br /&gt;10. Disconnect network cable&lt;br /&gt;11. From console, start Domino to ensure it operates properly&lt;br /&gt;12. Shut down Domino&lt;br /&gt;13. Re-connect to network&lt;br /&gt;14. Set service to automatic and add BES to startup tasks&lt;br /&gt;15. Start server and check for errors&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note: If using a new IP address, check the server doc Net Address field&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-7730528203950475058?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/7730528203950475058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=7730528203950475058' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/7730528203950475058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/7730528203950475058'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/01/knife-edge-cutover-for-domino-bes.html' title='Knife-Edge Cutover for Domino BES'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-8257806643344810483</id><published>2007-01-09T14:00:00.000-08:00</published><updated>2007-01-09T14:13:03.960-08:00</updated><title type='text'>BES Stability - A History</title><content type='html'>Well the stability of our BES servers have been up and down over the last few years.  Let me detail what has happened and where we are now.&lt;br /&gt;&lt;br /&gt;2004 Implement BES in production. Ramp up to over 1,000 users within 1 year.&lt;br /&gt;&lt;br /&gt;2005 BES 2.2 begins having stability issues with different types of faults, about once or twice a week. Requires a restart each time, which takes awhile to initialize given &gt;1,000 users on the box.&lt;br /&gt;&lt;br /&gt;10/2005 After submitting enless tickets and logfiles and dumpfiles to RIM, decided - even though monitoring said it was not an issue - to upgrade the RAM on our BES box from 2GB to 4GB.  Immediately notice vast improvement - crashes virtually end overnight.  Huzzah!&lt;br /&gt;&lt;br /&gt;2006 Now have a new 4.0 server (w/ 4GB) that approaches and surpasses 1,000 users without issue.&lt;br /&gt;&lt;br /&gt;Fall 2006 At about 1,300 users, 4.0 starts getting crashes now in either NBES or NSERVER process.  Back down below 1,100 users and the server stops crashing (regularly)!&lt;br /&gt;&lt;br /&gt;Lessons learned: 1,000 is just about the technical limit for a BES Domino box, even with 4GB of memory.&lt;br /&gt;&lt;br /&gt;There are reasons why you would want to go below this limit for recoverability as well:&lt;br /&gt;&lt;br /&gt;1) Restart times are less with lower users&lt;br /&gt;2) Log file size (and associated searching, zipping up for RIM, etc) is smaller&lt;br /&gt;3) Less time to do sourceless moves to another available server in DR situation&lt;br /&gt;4) Less users out of service when server goes down&lt;br /&gt;5) Maintain spare capacity to move users from other servers in case they go down&lt;br /&gt;&lt;br /&gt;For all these reasons, I like to use 500 as an upper limit for number of BB accounts per BES 4.0 server.  Yes this is much less than the theoretical 2,000 per server, but then I notice I end up sleeping better these days vs. when I didn't know how the server would act the next day...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-8257806643344810483?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/8257806643344810483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=8257806643344810483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8257806643344810483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/8257806643344810483'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/01/bes-stability-history.html' title='BES Stability - A History'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-9145270343571263543</id><published>2007-01-09T13:34:00.000-08:00</published><updated>2007-01-09T13:58:59.441-08:00</updated><title type='text'>Beware Sourceless Moves!</title><content type='html'>A few months back we had one of our servers go down, fortunately it "only" had about 350 users on it. Well I thought what a great opportunity to test out the sourceless move option to our hot standby server in our Colocation site.&lt;br /&gt;&lt;br /&gt;I moved a few users at a time to be sure it worked, and it only seemed to take a minute or so per user.  So I got some confidence and started moving 10-20 people at a time.  (I didn't get confident enough to bulk move more than that)  All this time I was watching the logs to see when the accounts completed the move process to gauge how fast it was going.  Pretty nice, actually, the move automatically updates the service books on the device with the new SRP ID, so no user intervention required, in fact it truly is seamless. Nice.&lt;br /&gt;&lt;br /&gt;Well after a couple of hours all the accounts were moved over and I focused on rebuilding the original server. Then after awhile I noticed something odd - there were some error messages in the log I was not familiar with:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[NoteID] was not found in any of the 1 redirected folders&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well actually I have seen these before but not so many of them. After a LOT of investigation, I discovered that Sent Items were not being redirected to *any* of the devices that had been moved to the new server.&lt;br /&gt;&lt;br /&gt;Although I had replicas of all the user's State DB's on the Colo BES server, I had assumed that I did not a backup of the BlackBerryProfiles.nsf database.  Upon each move, the new BES would pull info out of SQL and create a new Profile entry in this empty database.  "Great", I thought, "that creates a fresh clean profile entry, and besides, we are SQL all the way now, so these profile entries aren't really used."&lt;br /&gt;&lt;br /&gt;Ummm.... not quite.&lt;br /&gt;&lt;br /&gt;Creating a fresh profile DB entry for each user misses some critical information that, apparently - even in this age of the SQL DB as the master and core of our BES environment - &lt;span style="font-style: italic;"&gt;exists only in the profile DB entries&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I will name names here.  In particular, the following fields:&lt;br /&gt;&lt;br /&gt;1) DeviceCapabilities&lt;br /&gt;2) RedirectSelectedFolders&lt;br /&gt;&lt;br /&gt;First of all, DeviceCapabilities is set to null upon a sourceless move, and RedirectSelectedFolders doesn't even exist!&lt;br /&gt;&lt;br /&gt;What are the ramifications of this?  Well for DeviceCapabilities, the BES server will note that it is set to nothing and assume that it is a pre-4.0 device, and thus will not reconcile the Sent Items from Notes onto the device, and will throw the error I noted above.&lt;br /&gt;&lt;br /&gt;For RedirectSelectedFolders, this would be created and set to "1" if someone went into their subfolders and marked selected ones for redirection to the device. If this field doesn't exist, then the BES assumes naturally that they don't have any subfolders to redirect.&lt;br /&gt;&lt;br /&gt;So the "seamless" sourceless moves result in all devices not getting Sent Items or any custom redirected subfolders.  Not good.&lt;br /&gt;&lt;br /&gt;Of course, reactivating the device fixes this stuff.  But was I about to call 350 users and reactivate them all?  Nope.&lt;br /&gt;&lt;br /&gt;In order to fix this from the server side (which is where I prefer to be), I had to get a backup copy of the BlackBerryProfiles.nsf DB from the downed server, and script an agent to populate the fields in the new Profiles BD.  Although partially scripted, this was not automated, so I ran the script for each account, copying and pasting in the long string in the DeviceCapabilities field which the script then set in the new Profiles db entry.&lt;br /&gt;&lt;br /&gt;When these fields matched what was in the previous Profiles db, then magically people began getting their Sent Items and subfolders redirected as normal.  Not a fun day for me though.&lt;br /&gt;&lt;br /&gt;Of course I called RIM to ask about this "bug" and was told that they knew about this behavior but it really wasn't planned on being fixed.&lt;br /&gt;&lt;br /&gt;The upshot is.... never allow the BlackBerryProfiles.nsf database to be recreated, either by deleting it yourself or doing a sourceless move to a new server. You will lose valuable info in each document. Instead, in addition to the backup replicas you have of the state DB's, have a backup replica of this DB as well, so that in an emergency you can copy and paste the profiles into the database on the backup server, so they don't get autocreated and inherit all the fields with valuable goodies in them.&lt;br /&gt;&lt;br /&gt;One final note, this only applies to &lt;span style="font-style: italic;"&gt;sourceless &lt;/span&gt;moves - if you have the original BES server up and available during an account move, the destination server will pull all the information from the original profile document into it's database cleanly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-9145270343571263543?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/9145270343571263543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=9145270343571263543' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/9145270343571263543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/9145270343571263543'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/01/beware-sourceless-moves.html' title='Beware Sourceless Moves!'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-9215215732186384122</id><published>2007-01-09T13:16:00.000-08:00</published><updated>2007-09-18T08:09:45.292-07:00</updated><title type='text'>BlackBerry Lookup - The Details</title><content type='html'>The BlackBerry lookup feature allows one to do a lookup against the Domino address book from the device. Some common questions I see regarding this feature are:&lt;br /&gt;&lt;br /&gt;1) What fields does it pull from?&lt;br /&gt;&lt;br /&gt;and...&lt;br /&gt;&lt;br /&gt;2) Can I customize the fields it uses?&lt;br /&gt;&lt;br /&gt;Well the answer to #2 is No, not as of September 2007, the code is fixed and will probably not be customizable by us BES admins for awhile, if ever. The answer to the first question, however, is a little more straightforward.&lt;br /&gt;&lt;br /&gt;Here is a chart of the fields that, if populated in the Domino address book Person documents, are delivered as results to the device:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/RaQG7AL-qAI/AAAAAAAAAAM/hCTcqo_5gsU/s1600-h/Domino+BES+Lookup+Mapping.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/RaQG7AL-qAI/AAAAAAAAAAM/hCTcqo_5gsU/s400/Domino+BES+Lookup+Mapping.JPG" alt="" id="BLOGGER_PHOTO_ID_5018143495529867266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is a more graphical view of the actual Person document form and matching results fields, for those visual thinkers out there:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qhSyRnKgVC8/Ru_p6nCtleI/AAAAAAAAAKY/R9AVUSw7fJE/s1600-h/Domino%2BBES%2BLookup%2BMapping2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_qhSyRnKgVC8/Ru_p6nCtleI/AAAAAAAAAKY/R9AVUSw7fJE/s320/Domino%2BBES%2BLookup%2BMapping2.JPG" alt="" id="BLOGGER_PHOTO_ID_5111561295210845666" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qhSyRnKgVC8/RaQHUwL-qBI/AAAAAAAAAAU/IHxbfZ9En3E/s1600-h/Domino+BES+Lookup+Mapping2.JPG"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-9215215732186384122?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/9215215732186384122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=9215215732186384122' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/9215215732186384122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/9215215732186384122'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/01/blackberry-lookup-details.html' title='BlackBerry Lookup - The Details'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qhSyRnKgVC8/RaQG7AL-qAI/AAAAAAAAAAM/hCTcqo_5gsU/s72-c/Domino+BES+Lookup+Mapping.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8542532489456200473.post-6665689236180657816</id><published>2007-01-09T13:12:00.000-08:00</published><updated>2007-01-09T13:16:21.670-08:00</updated><title type='text'>The Purpose of this Blog</title><content type='html'>This blog was created to share information related to the BlackBerry Enterprise Server for Domino software product. I am currently an administrator for 4 BES servers serving over 1,800 devices worldwide, so I have a lot of day to day experience with this product which you just can't get reading the manuals or attending the tradeshows. I hope to provide useful information related to the administration of BES servers, as well as gain some valuable feedback as well.&lt;br /&gt;&lt;br /&gt;Thanks for browsing!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8542532489456200473-6665689236180657816?l=besdomino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://besdomino.blogspot.com/feeds/6665689236180657816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8542532489456200473&amp;postID=6665689236180657816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6665689236180657816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8542532489456200473/posts/default/6665689236180657816'/><link rel='alternate' type='text/html' href='http://besdomino.blogspot.com/2007/01/purpose-of-this-blog.html' title='The Purpose of this Blog'/><author><name>Mark</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
