Creating a URL attachment for Infor CRM

I recently was asked how to be able to create a URL attachment via server-side code in the Infor CRM web client. Url attachments are like other attachments in that a file is created in the attachment directory and a record is added to the ATTACHMENT table. However, URL attachments are always a .url file type. This allows an attachment to just be a shortcut to a web address.

In order to create one of these server side, you first must construct the .url file itself. Then you can use a built in attachment business rule to actually do the insertion of the attachment.

To create the url file we can use a StreamWriter and create the file that way. In my example I am going to add a file simply pointing to google. The file will be created in the system temporary path initially. Here is the relevant code:

string linkUrl = "https://www.google.com";
string OutputFilePath = System.IO.Path.GetTempPath();
string OutputName = "MyGoogleLink.url";
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(System.IO.Path.Combine(OutputFilePath, OutputName)))
{
    writer.WriteLine("[InternetShortcut]");
    writer.WriteLine("URL=" + linkUrl);
    writer.Flush();
}

Now with the file created locally on the server, we can now create a CRM attachment entity. In this case I am just going to add an Activity against a hard-coded account record. Once the activity entity is instantiated we then call the InsertURLAttachment rule, passing in the full path to the file we created. Here is the relevant code:

var attach = Sage.Platform.EntityFactory.Create<IAttachment>();
attach.Description = "Google";
attach.AccountId = "SomeAccountId";
attach.InsertURLAttachment(System.IO.Path.Combine(OutputFilePath, OutputName));

The rule InsertURLAttachment copies the supplied file to the CRM attachment directory. It also then handles saving the attachment record, so we do not need to do that in our code.

Finally, we want to be sure to clean up the temp file we created, otherwise it will stay in the temp folder. Here is that:

if (System.IO.File.Exists(System.IO.Path.Combine(OutputFilePath, OutputName)))
    System.IO.File.Delete(System.IO.Path.Combine(OutputFilePath, OutputName));

And the end result is a shiny new attachment in Infor CRM

ABOUT THE AUTHOR

Kris Halsrud

Kris Halsrud is a Senior Analyst / Developer for Customer FX Corporation.

Submit a Comment

Your email address will not be published. Required fields are marked *

Subscribe To Our Newsletter

Join our mailing list to receive the latest Infor CRM (Saleslogix) and Creatio (bpm'online) news and product updates!

You have Successfully Subscribed!