AutoCAD DBText.Bounds Not Calculating

I was writing something this morning that would draw bounding rectangles around groups of drawn objects. In doing so, I was using DBObject.Bounds to determine the minimum and maximum points of each object. Within each group, I would then determine the minimum and maximum collective points.

So – that’s all pretty simple. Frustratingly, after the first test, I noticed that I was getting a lot of bogus data (min points were being calculated arbitrarily small). After some debugging, I determined that DBText objects were the culprit. I set a conditional break point that would check if the Bounds property was outside of an expected value – DBText was always the problem.

Interestingly, if I expanded DBText in the debugger (to view all properties), the Bounds property was re-evaluated… and correct. I then used reflection to iterate through each of the properties of DBText to determine if accessing a specific property caused Bounds to be recalculated. As it turns out, accessing the AcadObject property (I believe this is a COM object actually) forced the DBText to recalculate Bounds.

So, while this is a bit ridiculous, my fix to this problem is this:

public static Extents3d GetExtents(DBObject obj)
{
   if(obj is DBText)
      object temp = obj.AcadObject;
   return obj.Bounds.HasValue ? obj.Bounds.Value : null;
}

Posted in Software Development | Tagged , | Leave a comment

Crystal Reports “The report filename was empty”

Background

I use Crystal Reports for much of our admin stuff at work (time cards, job cost, etc.)  These reports are accessed via an ASP.NET intranet site.

Parameters for these reports are often set in the code behind, with the ability for the user to change the parameters at will.  A typical Page_Init would look something like:


_report = new MyReport();
_report.SetParameterValue("MyParameter", myValues);
CrystalReportViewer1.ReportSource = _report;

Where _report is a ReportDocument.

Symptoms

The report would load fine. If the code behind didn’t set any parameters, the user was prompted for them (as expected).

If the user wanted to change parameters, he would go to the Parameter Panel and click the ‘Advanced prompt button’ for the parameter. The error The report filename was empty was then proudly shown to the user.

I was able to reproduce this issue on my development machine. What struck me as odd, though, was that if I set a break point just after _report was initialized, and expanded the _report object in Visual Studio, then the parameter prompt was shown as desired – no error. Also, if the parameters were set in the code behind, then this error was avoided.

Solution

The solution was simply to call _report.Load() immediately after initializing it. So, to correct the block of code from before:

_report = new MyReport();
_report.Load();
_report.SetParameterValue("MyParameter", myValues);
CrystalReportViewer1.ReportSource = _report;

Apparently, simply calling the constructor does not load the report all the time. Pretty special.

Posted in Software Development | Tagged , , | Leave a comment

Office 365 Public Folders

Public Folders have been available in Office 365 for a while now (10 months or so).  Still, most information I read is somewhat out-dated, or lacking in actual hands-on knowledge.  There is a lot of “it should”, “it will”, “it might”, “it is supposedly”… you get the idea.

Well, I have been using them for a little while now – and here is what I’ve found.

The Good

The end-user usage in Outlook is pretty much the same for Public Folders in Office 365 – note, I said usage rather than experience.  More on that later.

Public Folders can be accessed through OWA.

The migration of Public Folders from our on-premise Exchange 2007 server went about as well as I could have hoped.

The Less Good

Performance

Prior to moving to Office 365, I expected some things (especially including Public Folder access) to be a bit slower.  Public Folders are now always retrieved over the internet rather than the on-prem server.  I get that.  But, Public Folder access via Outlook is slow.  Like, really slow.  It is slow to load the tree, slow to load a folder, slow to load a single message.

Theoretically, you can add most-used folders to you favorites and have them cached on your local machine.  This isn’t really practical for us (partially because of how our PFs are structured).  Further, most KB articles I have read regarding Public Folder issues recommend against this.  It degrades Outlook performance overall, and can eat up a lot of hard drive space.

OWA

In OWA, you must add specific Public Folders to your list of favorites in order to access it.  What does this mean?  Well, you can’t simply browse the PF tree as you could previously (or as you would in Outlook).  It isn’t nearly as seamless as it should be (used to be) – and is not consistent with Outlook.  At first glance, you wouldn’t even know that you could access Public Folders at all in OWA.

Additionally, you can only view mail PFs.  Have a calendar in your Public Folder?  Yea, we do.  Well, we can’t access it via OWA.  Have a contacts list in your Public Folder?  Yea, we do.  Well, we can’t access it via OWA either.

The whole experience just feels crippled.

Permissions

With on-premise PFs, administrators could manage a Public Folder’s permissions via Outlook.  From everything I have read, you really shouldn’t be doing that with Office 365.  Instead, you should login to the portal, and manage Public Folder permissions through EAC.  No, it isn’t a huge deal – I just get disgusted with ‘Outlook is better to browse Public Folders, but use the portal for permissions, but don’t bother with OWA for Public Folder access’.  You get the point.

Searching/Crawling/Indexing

One of my goals after the migration was to add a better way for users to search PFs.  I had done some reading about using SharePoint to crawl and index PFs – which would then allow users to search (via SharePoint).  Perhaps not a seamless as I would hope for, but an acceptable solution nevertheless.

So, I attempted to do this in Office 365.  After hitting a roadblock, I submitted a support request.  It took somewhere around 4 weeks before I was told “you can’t crawl/index Exchange 2013 Public Folders with SharePoint”.  What?!  So, your most current version of SharePoint is incompatible with your most current version of Exchange.  Marvelous.  Oh, and it only took you 4 weeks to tell me this?  Fantastic.

Public Folder Data Management

The backend of Public Folders is quite different than in previous versions of Exchange.  The short of it – Public Folders used to have their own database, but now they utilize regular mailboxes.

Keep in mind that in Office 365, mailboxes have a size limit of 25GB.  So, when migrating PFs, multiple mailboxes are created for PF storage as needed.

In the migration procedure that I followed, there was something written to the effect of “after the initial migration, Public Folder mailboxes are managed by Microsoft”.  Basically, you had to create the initial mailboxes to fit your data, but we’ll handle creating new mailboxes / moving public folders afterwards.

That sounds great – but is a bit scary.  Based on my interactions with Office 365 personnel, I am justifiably worried about how this will play out.

Tragically

As many issues as I see in Public Folders, my only hope is that they will get better.  Other than moving back to on-prem, I don’t know of any better options that wouldn’t cause horrible backlash from employees in our office (mostly the boss).

If you actively use Public Folders, there is likely no better alternative (other than to possibly keep your on-prem server).  If you don’t use Public Folders, then I (and probably every other IT person) would warn against it.  Avoid it at all costs, and save yourself the frustration.

Posted in IT | Tagged , | Leave a comment

Office 365 Deployment Network Updates (Update)

At some point after writing this, I actually tried to utilize the network update functionality.  I used the deployment tool to download an updated version of Office 2013 Pro Plus to the network location specified in my deployment, and then waited… and waited.

Unfortunately, nothing happened.  Given that we are a small office, and I really just didn’t have any more time to waste trying to get this to work – I ended up reinstalling Office on users’ computers from their Office 365 online account (which changed their update settings to check Microsoft’s servers rather than our network location).

So, that has been working fine.  I am still amazed at the poor technical support offered for Office 365, and the general lack of specifics found via Google searches.

Posted in IT | Tagged , | Leave a comment

Office 365 Deployment Network Updates

So, when deploying Office 365, there are a couple options.  The first option (and I believe the Microsoft preferred option) is to have users log in to Office 365 and download/install software from the website.  The second is to use the Office Deployment Tool to create a network deployment.  In this post, I’m focusing on the second option.

When using the ODT, an xml configuration file is created / modified to specify installation preferences [Reference for Click-to-Run Configuration].  One of these attributes defines how Office ProPlus is updated.  By default, Office ProPlus will check Microsoft’s servers for updates, and install when available.  Alternatively, an UpdatePath can be specified as a UNC, local, or http path.  As an aside – I don’t know why you’d specify a local path for updates.

So, if you’re creating a network deployment (as I did), then it would make sense to update from the network as well – for all of the same reasons that you created a network deployment in the first place.  It is quite challenging to find good documentation regarding using a UNC path for the UpdatePath.

Some links that were helpful:
Office 365 ProPlus Adminstrator Series: Client Deployment Options – provides a good overview of the process
Microsoft Office 2013 Click-To-Run Virtualization – has a somewhat deceiving title, but is useful to determine what the current Office version is.

Some Questions I had

  1. How do I download updates?
    1. Run setup.exe /download <configuration.xml path> just like you did when downloading the deployment for the first time.
  2. When should I download updates?
    1. Well, you could run a scheduled task to automate downloading the most recent version (daily, for instance).  The problem is that if there isn’t a newer version [than what you already have], ODT will still download the entire thing right over-top of your existing deployment files.  It wouldn’t hurt anything, but it’s a huge waste of time and bandwidth.  So, instead, you could check Microsoft’s Click-to-Run Virtualization article (above), which will hopefully be updated whenever a new version is available.  It would be nice if (as an IT admin) you could subscribe to a list that would notify you when a newer version became available – but that would just be too simple.

Hopefully all of it works – because, to be honest, I can’t test whether or not the network update works until a newer version is available.

More Rambling

To continue my previous rant, I spent a lot of time trying to get Office 365’s tech support to answer those two questions.  A lot of time.  A.  Lot.  Of.  Time.

I called, wrote emails, read garbage responses, responded to those garbage responses.  In my experience, their response time is awful.  If your issue requires more than 2 rounds of emails back and forth, then you should really just call and hope for the best.  In most cases, I would respond to an email within 20 minutes, but not receive an update for several days (like 6 days+) if at all.  After getting tired of waiting, I cc’d the team lead and manager – but that didn’t help either.  I don’t mean this in a racist tone whatsoever, but it can be nearly impossible to explain your issue to over-seas tech support.  This only adds to the frustration of dealing with the current issue.

After my last call to them, the response I got (from a person whose first language is English) was:

Unfortunately, this department isn’t fully scoped to field that depth of question about the Office suite.

And I was provided (800)-642-7676 as the phone number to call for this type of question.  By that time, I was fed up and had managed to find the two articles above which sufficiently answered the questions I had.  The fact that it took over two weeks for someone to tell me “call someone else” was hugely enraging.

Posted in IT | Tagged , | 1 Comment

A teeny tiny Office 365 rant

I feel the need to rant a little (a lot).  Since the end of Small Business Server licensing, it has become cost prohibitive for small businesses to run their own Exchange Server.  Mind you, it was never cheap – but SBS definitely eased the pain.  With the introduction of Office 365 and the end of SBS, the solution seems forced down your throat obvious.

Office 365 seems to be evolving relatively quickly – for any company, not just Microsoft.  I had been looking into the migration process for over a year before finally taking the plunge.  That might seem like a really long time, but it isn’t (yes it is).  The trouble I had was finding up-to-date documentation.  Two factors made this complicated: 1. the somewhat rapid changing Office 365 and 2. a decline in Microsoft’s ability or effort to document things comprehensively in close proximity to the release of the product.

I have noticed the second point [decline in documentation quality/timeliness] being an issue in other Microsoft products as well – but I’ll try to stay on topic.

So far we have an evolving product with poor documentation.  It gets better.  I reached out to one of my resellers to see if my account manager could set me up with one of his Microsoft resources and get some of my questions answered so I could get the ball rolling.  Mind you – these Microsoft resources are primarily on the sales side, but if you want to sell something, you should have some knowledge.  Sadly, they didn’t [have any knowledge].  I would ask a question, and immediately know that the answer I was getting was a best guess.  I could then ask a different Microsoft resource (in an uncensored version, I would replace that word with something else), and get a completely different answer.  I feel bad for my account manager who must be deafened by the tone of frustration in my voice.  He knew that he was doing everything he could – but that his tools (yes, tools) weren’t much help.

One of the other reasons I was hesitant to migrate to Office 365 was the lack of Public Folders.  The company I work for uses and abuses PF’s to keep track of correspondence.  Yes, I know, Public Folders are not actually supposed to be used for anything.  From http://technet.microsoft.com/en-us/library/bb124001(v=exchg.65).aspx

Public folders are generally used for the following purposes:

  • Public folders can be used for shared communication, such as discussions through message posts, shared e-mail messages, contacts, group calendars, archiving of distribution list posts, and support for Network News Transfer Protocol (NNTP).
  • Public folders can be used for shared content management. Like file shares, public folders can be used to store content, such as documentation. Public folders are also good for sharing content if you do not require versioning and provisioning.

If you require offline storage of information or replicated storage of information, public folders are an ideal repository.

However, public folders were not designed for the following functions:

  • Public folders were not designed for archiving data. Users who have mailbox limits sometimes use public folders, instead of personal folder (.pst) files, to archive data. This practice is not a recommended best practice because it increases storage on public folder servers and undermines the goal of mailbox limits.

  • Public folders were not designed for document sharing and collaboration. Public folders do not provide versioning or other document management features, such as controlled check-in and check-out functionality, and automatic notifications of content changes.

So – as I read that – you can use Public folders for shared communication, content management, etc.; however, you shouldn’t.

Okay, okay – that got a bit off topic.  Where were we… changing product, lacking documentation, poor presales support… ah, yes – migrating away from Public Folders.  There are two primary solutions for migrating away from Public Folders – Shared Mailboxes and SharePoint.  In a situation where you never had PF’s, either might be fine.  But, when trying to replace PF’s, be prepared for unrest in your workplace.  I don’t think either option provides a seamless change over – because they are different products/technologies.

Fortunately, sometime in 2012 (June I think) Public Folders showed up in Office 365 Preview.  This gave me a lot of hope.  Not having to migrate away from Public Folders would save me a lot of time and headache.  So, once I saw that, I decided to just wait it out.

Earlier this year, PFs were indeed made available in Office 365 (though it should be noted that Public Folder storage is not how it used to be).  Once that was announced, it just became a matter of migration.  I tried really, really hard to have all of my questions answered ahead of time – but again, poor documentation and unhelpful resources made that really, really impossible.

Eventually, I just took the plunge and hoped for the best.  While this article has minimal technical knowledge, it serves two purposes – 1. to make other people who are equally frustrated feel less alone, and 2. to share just how frustrating this process is – even before you start the process.

Posted in IT | Tagged | 3 Comments

Windows Server 2012 Reboot after Manual Update

I have updates scheduled to install on Sunday mornings (early) for our servers.  This morning, I manually installed a single update through Windows Update on our Windows Server 2012 Hyper-V server, hoping that it wouldn’t require a reboot.  Well, it did require a reboot.  I did not click ‘Restart Now’, but instead just closed out of Windows Update and logged off.  I figured I’d reboot tonight after other employees were gone.

About 15 minutes later – my office was swarmed with people complaining that everything was broken.  I quickly realized that WS 2012 cared not what I wanted, and would reboot whenever the heck it wanted (as it turns out, after 15 minutes).

I found this: http://serverfault.com/questions/465473/prevent-windows-server-2012-from-forcing-a-reboot-after-updates which basically says to stop the windows update client service to prevent the automatic reboot.  But that’s a ‘oh crap, I didn’t mean to do that’ solution – not one I’d depend on.

What is really bothering me is that I haven’t had this problem on my Windows Server 2008 / 2008R2 servers.  If I installed the update and the server needed to reboot, I’d get an annoying pop-up notification telling me to reboot or postpone.  Once logged off, the server wouldn’t reboot automatically.  Why did they take this submissive behavior and change it?  They have equipt WS 2012 with gags and whips… and I don’t like it.

Posted in IT | Tagged , | 3 Comments