Updates from November, 2011 Toggle Comment Threads | Keyboard Shortcuts

  • Ken Sobieski 11:23 am on November 28, 2011 Permalink | Reply

    JavaScript and the CRM 2011 DateTime Field: Deconstructed 

    Suffice it to say, the DateTime control is not very intuitive when you need to manipulate pieces of it so, if you found your way here you are probably climbing the walls trying to figure out how to manipulate it.

    A project I am working on has a requirement where I simply needed to disable the date part of the field. After much searching, I wasn’t really getting where I needed to be until I paired the little information I had with the  which lead me to explore (and document) my findings to help someone else wrestling with this.

    If we look at the code snippet below which defines the control in the page (in this case we are looking at an appointment’s “scheduledstart”), we can see that it is quite complex in the structure (the left of the snippet documents the childnode indices of the control). However, by using the DOM, we can achive just about anything we would like.   To access each of the elements, of the control, you traverse the DOM tree using javascript .childnodes property.

    //The date textfield of the control

    //The date imgbutton of the control (opens the date selector)
    //NOTE: if you are disabling this control, set the image to ‘_imgs/btn_dis_cal.gif’, the “greyed-out” control

    //This can also be accessed by  crmForm.all.scheduledstartimg
    // as I understand it, related imagebuttons will always be named “<related control name>img”

    While the time selector part of the control appears to be a standard SELECT control, it is, in fact, a text box paired with an image button. To disable the control, the easiest route is just to disable the TD that the control lives in:

    //The time selector of the control

    If you need finer-grained control and want the parts, while I have not tested this, the indices should be:

    //time text box

    //time image button

    Happy coding!

    DateTime Control Snippet

  • Ian Leu 11:37 am on November 23, 2011 Permalink | Reply

    Sugar CRM continued.. 

    While Sugar CRM does a lot of things really well, I’ve noticed some restrictions in the Sugar workflows that leave this part of the solution with something to be desired (compared to CRM 2011). A few things I’ve noticed that CRM 2011 can do in the workflow engine that Sugar can’t:

    • Create a workflow that fires when records are created new without adding a condition. In Sugar, no workflow fires unless you add a condition (there should be some warning when creating a workflow for new records about this).
    • Retrieve the value from a current record to update other records.
    • AND/OR operators for conditions. In Sugar if you want to accomplish this, you have to create multiple workflow records.
    • Change the scope of which users the workflow runs for or are available to, in Sugar it either runs for everyone, or no one.
    • “On Demand” workflows. It is very nice in CRM 2011 to be able to select records and run a workflow against them manually.

    If you need to automate some simple tasks (like email alerts, or creating new records with hard coded values etc.) the workflows in Sugar works great. But if you need something more involved, you are better off writing a custom function and adding it to the logic_hooks.php file for the module.

  • Rayan Hanoudi 2:23 pm on November 21, 2011 Permalink | Reply

    Lessons Learned with Office 365 

    Lessons learned

    1. We noticed very slow performance when accessing a secondary mail file from Outlook 2007.  Upgrading to Outlook 2010 corrected the problem.
    2. Upgrade of Office 365 from the professional version to enterprise version is not easy.  See Lisa’s Blog for details.
    3. We noticed two problems with both Outlook 2007 and 2010:
      1. Calendar reminders do not show up.
      2. Unread email messages with the following information:

    11:37:00 Synchronizer Version 14.0.6025

    11:37:00 Synchronizing Mailbox ‘Rayan Hanoudi’

    11:37:00 Synchronizing local changes in folder ‘Drafts’

    11:37:00 Uploading to server ‘CH1PRD0402.mailbox.outlook.com’

    11:37:01 Synchronization of some deletions failed.

    11:37:01                         [80040115-514-80040115-130]

    11:37:01                         Network problems are preventing connection to Microsoft Exchange.

    11:37:01                         Microsoft Exchange Information Store

    11:37:01                         For more information on this failure, click the URL below:

    11:37:01                         http://www.microsoft.com/support/prodredirect/outlook2000_us.asp?err=80040115-514-80040115-130

    11:37:01           1 item(s) deleted in online folder

    11:37:01 Done
    I found a fix on the office 365 community forum: http://community.office365.com/en-us/f/160/p/11060/48912.aspx

    We had to:

    1. Quit Outlook, delete the OST file and start Outlook again and have it rebuild the file.
    2. Quit Outlook, Turn off “Use Cached Exchange Mode”, start Outlook.  Exit Outlook and enable “Use Cached Exchange Mode” again.
    3. There is still on outstanding issue with an unread email that shows up all the time:

    9:49:36 Synchronizer Version 14.0.6109

    9:49:36 Synchronizing Mailbox ‘Rayan Hanoudi’

    9:49:36 Synchronizing local changes in folder ‘Drafts’

    9:49:37 Uploading to server ‘CH1PRD0402.mailbox.outlook.com’

    9:49:37 Synchronization of some deletions failed.

    9:49:37                   [0-130]

    9:49:37    1 item(s) deleted in online folder

    9:49:37 Done

    Many people are having this same exact issue, see this blog post:  http://community.office365.com/en-us/f/146/t/3437.aspx

    • A B 10:33 am on March 5, 2013 Permalink | Reply

      Will try the options 1&2 soon as I have the identical error message. Will confirm if it works so that you know it is a deffinet fix. Thanks, this website is the only one on which I could find the answer.

  • Ken Sobieski 1:54 pm on November 18, 2011 Permalink | Reply
    Tags: MS SSRS   

    Outlook Mail Attachment’s from SSRS 

    It would be naïve to think that The World Wide Web is by any means a “safe” place to be. If I were developing a browser, I would likely do everything I could to protect the public from the outlaws in the Ether.  That being said, there are, on occasion, legitimate reasons to want to perform actions on an Intranet that should never be allowed in the wild.

    Recently I was exploring attaching a file created from SQL Server Reporting Services (SSRS), running on an intranet web app, directly to a MS Outlook Email. Using the Outlook ActiveX from JavaScript makes it relatively painless to open up an Outlook E-mail, set the information and attach a file. Using SSRS, the best approach to tackling the attachment seemed to be either stream the file directly into an Outlook attachment or download the file directly (read: without prompts)  to the client and attaching the file.

    For those not familiar with SSRS, it has some great features for creating reports and easily exporting them (to PDF, Excel, etc.). There are even alternate ways to access reports in multiple formats, including:

    1. Using the SSRS viewer control, the user has buttons to export as they see fit
    2. In code, one can use the viewer to export or save a report programmatically
    3. Direct via  URL/Parameters

    There had to be a way, given the flexibility of the service, to solve this problem. The answer: “Sort of.”

    I began using a VS2008 report viewer control. This route allowed me to use server-side code to generate the report to a PDF and save it to the client, but this required the user to acknowledge the file download. I then looked at the web services to stream the file directly to a byte array and send it to the client. Almost, but not quite – the user still needs to acknowledge the file download. I tried to use the server control itself to generate a file, but this was saved on the server-side (as expected), and not directly accessible to the client. I also tried WinHTTP to grab the file and save it using FSO but that wasn’t built for binary files, and the ADODB.Stream Object is disabled for access without a registry hack that could cause even larger issues (not to mention not being an easy thing to do on machines in a client’s network).

    A little more digging gave me hope when I learned the report viewer in VS2010 had a JavaScript API. This HAD to be the solution! There is, in fact, an ExportReport method but again, the user is prompted to accept the report. Not what I had hoped for.

    My final attempt lead me to consider Acrobat automation. While the ActiveX API has many functions, I was again faced with an inability to take a stream and save it to the client without intervention. Strike 100…

    If you found your way to this post because you have a similar requirement, hopefully my journey will save you some time exploring these paths. I did come up with a sort-of-work-around thanks to input from the guys around me (sometimes you can get so focused on the tree you forget there’s a forest, too). Assuming your requirement is for an Intranet app, and the users with the requirement and the servers are on the network, you can save the file server-side to a shared network location and attach it from the share. This save the user from a having to intervene and gives them a nice Outlook e-mail with the report attached. As with a lot of solutions, it’s not pretty, but it works…

    It’s good to know that not just anyone can download a file to a (read: my) machine without explicit permission but, in this case, there needs to be a way to allow files to be downloaded without notification as long as it has been set as a trusted site. Lock it down as a general rule, but let me decide if I want to (potentially) shoot myself in the foot. With web apps quickly replacing traditional desktop apps, there needs to be a way to set the browser’s security settings lower to enable more full-featured functionality.  I don’t want to have to write a browser plug-in every time I need to do something out of the norm.

  • Lisa 9:17 am on November 16, 2011 Permalink | Reply
    Tags: ,   

    Finally! Move your calendar entries and contacts from Lotus Notes to Office 365 

    When we migrated from Lotus Notes to Office 365, we had to move our calendar entries manually to Office 365. After some digging around, I have found out how to migrate your calendar entries and of course your contacts.

    In Lotus Notes, go to your calendar and under the lists view click on calendar entries.

    • Highlight all of the entries that you want to move over.
    • Click File, then export.
    • Navigate to where ever you would like to save the file.
    • You want to change the ‘save as type’ to Calendar Entry (.ics)
    • Put in a name you want to give the file and make sure that you put .ics after the file name. (This is to make sure it exports as a .ics)
    • Click Export.

    Now, you need to have Outlook set up on your desktop. (The client version, not OWA)

    For Outlook 2010:

    • Click File, then open.
    • Click Import.
    • Choose import iCalendar (.ics)
    • Navigate to the .ics file you just exported and click open.
    • You can either choose to import it in a new calendar or import it into your own calendar. (I chose to import in my current calendar).

    Once I did that, my calendar entries imported. Note that in Lotus Notes, if you have some reoccurring entries they may not import into outlook because it contains a recurrence pattern that Outlook doesn’t support.

    Onto importing your contacts. Make sure that you copy all of your contacts to your local address book database. They will export better this way. Once copied over do the following:

    • Click File, then click export contacts.
    • Fill in the name of the file you want to give it and make sure it is saved as a .csv file
    • Pick which options you want as far as what contacts you want exported.
    • Click Export.

    You will now see the csv file where you saved it. Open it up and clean up the columns.

    When that’s cleaned up. Go to your Outlook and import them. Your contacts can be imported through Outlook or OWA.

    For Outlook 2010:

    • Click File, then open
    • Click Import and choose import from another file or program.
    • Choose comma separated value (Windows) or which ever applies to you.
    • Find the csv file you just exported and click next.
    • Under your mailbox find ‘contacts’ (or where ever you want the contacts to import at) and click next.
    • Click Finish.

    It should import your contacts.

    To import your contacts through OWA:

    • Go to your mailfile and click on contacts.
    • Right above the search your contacts box there is an import button. Click on that.
    • Navigate to the file where your exported contacts are.
    • Once you click next it will import your contacts.
    • Sherri 4:44 pm on November 17, 2017 Permalink | Reply

      You saved my life with this, just completed migration from lotus to outlook and recreating my calendar was going to be a nightmare. Thank you for the tip!

  • Joe Wichowski 2:28 pm on November 15, 2011 Permalink | Reply
    Tags: ,   

    With operation metrics, putting the cart before the horse can really pay off… 

    Often companies stall to create metrics to measure team performance because the operating data they have does not exactly match the numbers they want.  However, as Jeanne Ross, director of MIT Sloan School’s Center For Information Systems Research points out in this weeks InformationWeek article, creating a single-vision of data within your company “doesn’t have anything to do with accuracy – it has everything to do with declaring it” as the central go-to number.

    Her view is that teams spend far too much time “collecting, cleansing, and perfecting what they think is “the right data” to measure, instead of actually tackling the underlying business problem itself.  The real value is therefore in starting with some number – any number – to begin to understand how likely you are to run out of stock, how often you fulfill orders “on time”, how long does the average customer service request take to resolve, and so on.  In other words, it does not matter if you cannot simply calculate those numbers.  Instead, you may need to look at several other, related or relevant numbers, that you have access to right now in order to make proper inferences towards the business challenges you seek to resolve.

    As a driver of the Management By Exception philosophy for our customers, we at Traction agree that it is always better to “start measuring now – something, anything” instead of the continual discussions that take place, which focus more on the topic of “the measurements that we don’t have” versus the one’s we actually do have.  By shifting to a “good enough to start with” mentality, companies can break free of this cycle, and instead of waiting for data they don’t have, they can focus on the data they do have – and create new ways right now to drive improvement, innovation, and performance.

  • Kurt Higley 8:01 am on November 14, 2011 Permalink | Reply
    Tags: ,   

    TeamWork on the Go 

    More specifically, Mobile TeamWork.  We have had a mobile interface for the iphone for a while now.  Recently we have begun the process of giving it a face lift and adding some additional functionality.

    Before, it was just a quick informational reference.  No editing allowed.  No iphone integration.  The new version allows editing of the contact information as well as initiating a new email, phone call or sms right from the contact information.

    Below is a sample image of the new contact form:

  • Joe Wichowski 10:42 am on November 8, 2011 Permalink | Reply
    Tags: ,   

    Top 3 initiatives to leverage CRM as a key business-enabler 

    Set the expectations

    “[A] root cause of CRM failure is looking at the projects as software deployments when, in order to take full advantage of the systems’ capabilities, a substantial reorganization must be performed on virtually every operation touching customers.” – John McCormick, Baseline Magazine, ‘A Cheet Sheet For CRM Success’

    Too often, companies do not focus enough attention on “what” they would like to achieve.  If the goal is to drive more sales, then how many cold calls each week would make a difference to the bottom line?  If you want more customer intimacy, then how often should your customers be proactively called or visited?  How quickly should a customer service representative resolve an issue for a customer, and what follow-up behavior will best ensure a high-rating on your next customer survey?  By defining clear, quarterly objectives that will help drive sales and ensure rock-solid customer service, it is easier to measure staff on their effectiveness, and ensure your expectations achieve the results you desire.


    Make it easy to achieve

    “The challenge in CRM is really specific to the sales and marketing applications. Much of the software on the market today helps automate process, but doesn’t necessarily provide incremental value back to the user. Sales people often complain that CRM or SFA is just an administrative burden, and does little more than prove to their boss that they are doing their job. So adoption wanes, and users go back to using familiar tools like spreadsheets, databases or even just Rolodexes.” Robert Bois, AMR Research, ‘CRM Spending Up, but User Adoption Still A Problem’

    The common misconception companies make is that a CRM system will allow them to achieve their objectives out-of-the-box.  CRM software is just a tool.  Without a simplified user interface, automated data integration to reduce effort, and custom workflow to automatically move the ball down-field, your CRM investment serves more as a “folder” of information, instead of a proactive business system.  Our vision of CRM is quite simple:  Ensure every management expectation has a defined process, and program those processes into your CRM solution to ensure no one drops the ball.  This is done via workflow agents, system notification, email alerts, and custom reporting.  The goal is to help users meet your expectations, with as little busy-work as possible.  After all, their job is to support and service your customers – not “work” with software.


    Create metrics to inspire and challenge

    “What gets measured gets done, what gets measured and fed back gets done well, what gets rewarded gets repeated.” – John E. Jones, Organizational Universe Systems

    The final key in transforming your CRM initiative into a strategic business enabler is to regularly measure and publish your team’s results.  By making your business processes visible – not just the “wins”, but the losses as well – you create a mentality for continual process improvement.  After all, most employees are winners.  Too often however, they don’t know the score.  Metrics and Dashboards provide a continual set of information for teams, showing them where they are strong, where they are weak, and where they are most effective.


    Get Started Now

    Everyone has a success mechanism and a failure mechanism. The failure mechanism goes off by itself. The success mechanism only goes off with a goal. Every time we write down and talk about a goal we push the button to start the success mechanism  – Charlie “Tremendous” Jones, American Motivational Speaker & Author

    Turning CRM into a true “business enabler” requires focus, hard work, and a solid kick-starter.  So, if your CRM implementation has failed, or you are in the process of getting started, here’s three ideas to get the ball rolling:

    • Book a Strategy meeting today with your Sales Manager, Marketing Manager, Operations Manager, and President.  Set the tone – “reset” your ideas for CRM, and hold a blue-sky session.  If you could view 3 years out, where would you like your company to be?  What would you need to “sell” to get there?  How many sales staff would that require?  How many operations people would be necessary to support the new initiative?  Write it down as a “shopping cart” list.
    • Determine where your teams are functioning well, and where they could improve.  If you don’t know, then now is the time to put some stakes in the ground.  Build a scorecard for each of the following topics, and rate them from 1 to 10 to get a better understanding on where you currently are:Cold calling – Leads / Prospecting
      Repetitive Account Management / Visits
      Quoting – Response time, Follow-up, Proactive proposals
      Education – Communication of Products/Services – For both Sales and Customer Service
      Information – Reacting to reports/metrics, Providing proactive information
      Customer Service – Response time, Follow-up/Documented closure of every request
      Product Quality – Overall quality, Perceived Value/ROI
      Product Delivery – On time / As-expected, On budget
    • Based on the output of the Strategy meeting, and cross-referencing with the lowest scoring team functions, select 1 or 2 items to work on and improve this quarter.  Then next quarter, select 1 or 2 more.  After 12 months of improvement, re-score yourself again, celebrate the improvements, and re-focus on another year of change.
  • Lisa 8:06 am on November 4, 2011 Permalink | Reply

    Apache is tricky 

    I recently had to work on an Apache Web Server and had to bind a couple of IP Addresses to a site. There isn’t a UI for Apache. So for me to be able to bind an IP Address, it took some research. In IIS, there is an option to bind an internal and external IP Address to a site. So, going from IIS to Apache was definitely a challenging task. I would just get Apache to work and then it would break, but I have it this time.

    In order to bind an IP Address in Apache, you have to edit the httpd.conf file. From what I have gathered, if you have an internal and external IP Address for one site you have to create them as Virtual Host. In the middle of my research, I did find that you would create a Virtual Host if you were wanting multiple sites using the same Port.

    The picture below is an example of what I did to configure the Virtual host.. Let me explain it further. (This example configuration is for using Apache on a Windows machine)

    Let’s say I have an Internal and External IP Address that I have to bind to one site and they are both using port 81.

    You would start off with stating what the IP Addresses are and their port.

    NameVirtualHost (Pretend this is the internal IP Address)

    NameVirtualHost (Pretend this is the external IP Address)

    Then we need to state the IP Addresses/ports and tell it where to look for that sites index. html file.

    <VirtualHost> (This is your beginning statement. Doing this means you are telling Apache that you are referring to these Virtual Hosts)

    DocumentRoot “C:\Program Files (X86)\XX/htdocs/” (This is where you tell Apache where your index.html file is. If you have a space in the path, you must put quotes around it. Also, you will notice that I went from back slashes (\) to forward slashes (/). I am not sure why it is set like that, all I know is that Apache will not be able to find the index.html file if you do not put in forward slashes. If I am putting up a sharepoint site and using Apache Web Server. The path in Windows may be C:\Program Files (X86)\SharePoint\htdocs\index.html. You would start using forward slashes after SharePoint. Also, you do not need to put in index.html in the path, You can end with the directory right above it, but make sure you keep the / at the end.)

    ServerName SharePoint.apache.com (This is where you would put in the URL Name in for the site)

    ServerAlias SharePoint (This is just an alias for the server. This will show up in the tab of your web browser)

    </VirtualHost> (This is your ending statement)

    It will look like this without all of my comments.




    DocumentRoot “C:\Program Files (X86)\SharePoint/htdocs/”

    ServerName SharePoint.apache.com

    ServerAlias SharePoint


  • Ken Sobieski 10:41 am on November 2, 2011 Permalink | Reply

    Things I have learned about CRM so far 

    Things I am having to learn, or have learned, about CRM:

    • Individual fields are set “dirty” rather than the entire record, reducing the chance of a collision (if you want to know more, look here)
    • The back-end data structure (e.g., where things like user time zone information live — can you say “user settings“)
    • Creating new fields (hey, the “whole number” type can be formatted to display as a time zone list!)
    • Processes & Work Flows
    • and, of course, all the other pieces to build “the right solution” for the customer (thanks to the Channel 9 crew for a ton of good information!)

    I’ll keep posting (hopefully) good information as I learn to leverage the power of Dynamics CRM as well as other CRM and data packages. If I’m lucky, maybe along the way I’ll find better and easier ways to accomplish my tasks and, if not, at least you may benefit from my pain conquering a problem “the hard way.”

    Oh, and if you are listening, Microsoft, would it be that unreasonable to ask for a package like this to make manipulating the UI a little less cumbersome? I mean, really, you already have such a nice AJAX tool set…just saying.

  • Lisa 7:47 am on November 2, 2011 Permalink | Reply
    Tags: ,   

    Outlook 2010 reminders not popping up 

    For our users that use Outlook 2010 and have the CRM 2011 Outlook Connector installed, have an issue with their calendar reminders popping up. After doing some research and testing possible solutions, I have came up with a work around until Microsoft comes out with a Solution.

    The work around is to uninstall Microsoft Office 2010 SP1. Once this was uninstalled, all of the reminders from the past couple of weeks popped up.

    When Microsoft comes out with a solution, I will update you on what that is.

Compose new post
Next post/Next comment
Previous post/Previous comment
Show/Hide comments
Go to top
Go to login
Show/Hide help
shift + esc
%d bloggers like this: