UruIT Blog

A nearshore dev team passionate about agile, web and mobile

  • We are all about AngularJS !

    AngularJS is a client-side JavaScript framework created to simplify your life. Okay, so I’m exaggerating a little…. But it does make front-end development much easier!

    Why? You know that as time passed apps got more and more complex, especially in an interactive aspect, and avoiding spaghetti codes with JavaScript or JQuery became too complicated. You are not the only one that wanted to simplify the development and organize the code…some great people was also thinking about this so they built a couple of powerful framework to help us all… Knockout, Backbone, Ember and Angular appeared to fight complex and tangled source codes. And, among them AngularJS was the most accepted by the community. Again, why?

    Well, our Ninja developers love AngularJS, they are using it for different projects, integrating other Microsoft platforms, this is what I have heard!

     “It is expressive, readable and it facilitates maintenance”

    “We are developing an app and an add-on designed especially for Microsoft Dynamics CRM and we are using AngularJS to do it “

    “SharePoint itself is changing from being a server-based platform to a browser-based one, and it encourages the use of frameworks like AngualrJS”

     “It provides a well-organized structure and therefor is quick to develop”

     “Our client chose AngularJS to develop a real state app. The framework helps us leverage our development process, it is faster than working with JavaScript or others. The code is better in quality, it has fewer bugs and it is easier to maintain.”

    “It optimizes testing experience and boosts software creation”

     “Using AngularJS for dashboard applications is a great advantage for us, the developers, when it comes to time and organization”

    Yes, I know… our talented developers seem to have a bit of a crush with this framework! But in this case love is not blind! Let us introduce you to AngularJS and you will see how easy is to adore it!

    Click here to read the full article!  We are all about AngularJS. Do you want to know why?

  • Tips for a successful migration to SharePoint 2013

    We started this year all out migrating production farms from SharePoint Server 2010 to high availability servers in the latest version of the product, SharePoint Server 2013. With this migration we found some things we thought would be interesting to share with those of you who are considering (or already doing) a migration to SharePoint Server 2013.

    This article doesn’t cover every issue related to SharePoint migration, but gives some pointers to be considered.

    Requirement Changes

    From the Hardware's point of view if we compare the Requirements for SharePoint 2010 and the requirements for SharePoint 2013, the first thing we notice is that the RAM amount needed for the Web servers increased. This is actually rather natural between version changes but it's something to bear in mind. An example for this is that in SharePoint Server 2010 you could configure an evaluation or development server with 4GB of RAM but in SharePoint Server 2013 this increased to 8GB, which is a significant increase. Also if we want this server to have integrated database we'll need 24GB of RAM. We have noticed this memory requirements increase in practice, since in this version the search service uses a significant amount of memory.

    On the other hand by increasing the Web servers amount of memory we have to plan more free space in the hard drive, since it's recommended to keep free space in your HDD at least 5 times the RAM. In practice this means that if we have a SharePoint Web Server in production with 24GB of RAM the ideal would be to at least have 96GB of free HDD space or else SharePoint will alert us in the Central Administration....

    Read the full article here: Tips for a successful migration to SharePoint 2013

  • Syncing sharepoint 2010 with outlook

    SharePoint offers the possibility to connect to content in a Document Library directly from Outlook, edit the documents offline and then sync when connection is restored. This is very useful if we are working at home and we want to access a shared document (ex. VPN connection settings) or continue working directly on a file.

  • CRMGamified: improving user adoption/compliance of ms dynamics crm

    We had a truly exciting past week in UruIT due to the release of CRMGamified (beta) by UruIT Dynamix, a branch of UruIT. Excited not only because of this new line of business that’s emerging, but because the product itself is of great importance to UruIT as a whole. It comes to solve one of the most common challenges in every CRM system implementation: User adoption and compliance.

  • Knockout: data binding in Javascript

    Knockout is a Model-View-ViewModel framework for Javascript. In this post I will explain the MVVM pattern, the concept of data-binding, and will give some examples of usage. At the end of the article you will find a sample file with all the code.


    Some days ago, I faced an issue regarding CRM audit feature. A customer was unable to close an active case since there was an open activity related to it. Then I told him to close all open activities before closing a case because that`s the way it works. However, he was unable to close the activity because CRM had experienced an error.

    The activity that my customer was trying to close was a draft email (in fact, he wanted to delete the email, but he was unable to, though). When I took a look at it, I found that some recipients (highlighted in red) were not resolved in CRM.The exception was related to the Audit feature enabled by me a couple of days before the user had this error. The plug-in that registers the changes on the entities tried to establish a relationship between the recipients of the e-mail (fields To, CC and BCC) and some existent contact or account in CRM, which in fact, they don't exist in CRM.Just by looking at the server log, you can confirm this: 

    “The Web Service plug-in failed in OrganizationId: 0d469757-a137-46d1-8f38-12a6d65f79a5; SdkMessageProcessingStepId: b92673ed-dc92-442b-a6c6-82f2fce14585; EntityName: email; Stage: 25; MessageName: Delete; AssemblyName: Microsoft.Crm.AuditMonikerMessagesPlugin, Microsoft.Crm.Audit, Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35; ClassName: Microsoft.Crm.AuditMonikerMessagesPlugin; Exception: Unhandled Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
    at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
    at Microsoft.Crm.AuditHelper.GetXrmValue(Object attribute)
    at Microsoft.Crm.AuditMonikerMessagesPlugin.BuildDeleteData(StringBuilder attributeMaskBuilder, StringBuilder changeDataBuilder, Entity preEntity, EntityMetadata entityMetadata, IPluginExecutionContext context)
    at Microsoft.Crm.AuditMonikerMessagesPlugin.BuildChangeData(String& attributeMask, EntityMetadata entityMetadata, IPluginExecutionContext context)
    at Microsoft.Crm.AuditBase.LogAuditData(IPluginExecutionContext context, Guid objectId, Boolean allowEntityOnlyAudit, Entity entity, EntityMetadata entityMetadata)
    at Microsoft.Crm.AuditMonikerMessagesPlugin.Execute(IServiceProvider serviceProvider)
    at Microsoft.Crm.Extensibility.V5PluginProxyStep.ExecuteInternal(PipelineExecutionContext context)
    at Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)

    My workaround to this problem was to disable the audit feature for the fields To, CC and BCC of the e-mail entity.

    I hope this helps.

    Nicolás Brandl

  • Changes to SharePoint web.config with SharePoint API

    When installing SharePoint solutions in production environments, configuration often leads to assorted complications. Making installation manuals for non-technical customers, adding configuration parameters to the web.config file, or adding any necessary configuration of third-party components by hand, are things that can be avoided by managing the configuration matters within the solution to be delivered without requiring any manual configuration, all through SharePoint API.