You are here

Application Development

Simple FTP File Download/Upload (C#)

Recently, I was working on a solution which required a scheduled download of a hosted file. There are a few samples floating around online of how to do an FTP download/upload, but I figured I would share what I've been using as it is incredibly simple and does the job perfectly.

We utilize WebClient and NetworkCredential, so the System.Net namespace is required. Then, we just supply credentials and call either the DownloadFile() or UploadFile() method which require the source and destination folders - that's it! Below are examples of each.


CRM 2016 Quick Create Forms: How to Re-enable the Save Button

During the Quick Create Form’s save event, let’s say you have some JavaScript validation code and you want to use the fully-supported “preventDefault” to cancel the save if validation fails. In CRM 2016, you’ll notice that the Save button remains disabled, leaving the user no choice but to close the form and start over again. This bug means that you have to either set up the Quick Create in such a way that validation is not necessary or you’ll need to handle all validation during the “On Change” events, rather than “On Save.”

ADX Portal: Dynamic Behaviors in Entity Forms

ADX provides a powerful way to render CRM forms directly on websites. One thing that is not being supported by ADX is the application of business rules, especially the ones that trigger real time changes in the UI. One example is the dynamic appearance/disappearance of UI elements based on the value of a form field. The lack of support makes ADX forms relatively static when we use them out of the box. 

Earn the Nickname "Eagle Eye!"

Thorough testing is key to delivering quality software to our customers. In the software development sphere, we invest time and money to create test plans, suites, cases and scripts. Within these documents, we note the details that need to be verified based on the system features being delivered, providing a great cornerstone for our testing efforts.

Beyond the planning and the documents, though, great testing requires a tester who will:

Filtering a List Using Another List with LINQ

Usually, when filtering data from a database or a collection, you are comparing one or two values to a list of many. However, with a recent application, I found myself needing to filter a list of items using another list. The movies in Figure 1 below provides a good example.

Figure 1. Sample Movie Listing

Custom Entity Icons in Dynamics CRM

Recently, I had been making some seemingly simple adjustments to a CRM environment and ended up uncovering a lot of useful (but not very well-documented) information on icon usage in MSCRM - here is how it all played out.

Users are mentioning that the icons for custom entities in CRM for Outlook all look the same, and don't reflect what they see in the Web UI. Here is what they see:

CRM 2016 E-mails: Defaulting the “To” Field to a Specific Entity

Ever since CRM form rendering has been changed, a lot of unsupported-but-working JavaScript has been rendered useless and alternatives haven’t necessarily been readily available. One example of this would be the method used in CRM 2011/2013 to default the selected entity when the lookup window is opened for a PartyList control, such as the “To” field on the E-mail form.

WebForm Chaining in ADX Studio

WebForms in ADX studio provide a powerful tool to create and manipulate an entity record on the portal in multiple steps. We can choose to stick to the out of the box step types that perform standard operations, such as displaying CRM forms, redirects or conditional branching. We can also wire in steps that execute custom user controls that we added to our ADX .NET solution. All of those tools give us a wide set of options to model interconnected processes within one single WebForm.

Simple Databinding with RivetsJS

I’ve used KnockoutJS and AngularJS for different projects, but for a store locator application I was working on, all I needed was basic data binding and I didn’t want to change my client-side model. That led me to RivetsJS, a small lightweight data binding and templating solution that works with your existing model.