Act! for Outlook

So, you have an amazing CRM application that is used throughout the world. Thousands of users log in daily to manage their business concerns and connections. How do you make the product even better? A good mantra to follow is “Come to where your users are” to enable rich productivity gains and increase user adoption.

I am excited to say I was part of Act!’s continuing goal to meet users where they are and add value to the day in the life of a typical Act! user. In 2023, I was engaged with the team in Scottsdale working on their plans to improve Outlook integration.

So to give you, dear reader, some background, several years ago I was embedded with the Swiftpage/Act! team as an internal contract architect/developer. Coming from the SalesLogix ecosystem, I was brought along when Swiftpage acquired Act! from Sage, as well as the SalesLogix product. Swiftpage sold off Saleslogix several years later, and then renamed the company back to Act! from Swiftpage. Throughout those years, I developed great working relationships with the team at Act! 

In 2023, I had the pleasure of working on their Outlook and Word integrations. I had a hand in developing the earliest versions, and have since worked with the team to evolve them into the robust products they are now.

What I am most pleased with is the UX refresh in the Outlook add-in, including active theme changing and the first iteration of the sidebar including contextual CRM details for the active sender of a given email. In getting to the release I was tasked with providing a functional POC to enable users to be more productive in Outlook with their Act! CRM data.

After getting approval on the POC work began to bring the product to release quality. The work I provided consisted of the following tasks:

  1. Building UI components for the Task Bar
  2. Building a Theming engine and integrating it throughout the platform
  3. Updating all the existing UI with a newer/cleaner layout
  4. Iterating, and delivering to the Act! Internal team to test and provide feedback

Included here are some screenshots of the final product.

Now, from the comfort of Outlook, Act! users are able to view contextual contact data, add/modify contacts, create activities and just be a little more productive without having to leave their email client. I would say that is a great productivity win for Act! users.

I worked closely with Product Development at Act! on this feature set and appreciate their continued faith in me to support and build functionality to make the marriage of Act! and Outlook a wonderful productivity tool for thousands of Act! Users around the globe.

** SALES PITCH BELOW **

Dear reader, whether you’re aiming to streamline operations, boost efficiency, or innovate your business processes, our software consulting firm is here to bring your vision to life. Let’s collaborate to create tailored applications, integrations, and productivity tools that align perfectly with your unique needs. Get in touch with us today, and let’s embark on this journey together toward crafting innovative solutions that elevate your business to new heights. Contact us now to start the conversation!

Now if you are a SMB and searching for a hosted CRM, check out the Act! website. It’s an excellent CRM with integrated Sales and Marketing capabilities for SMB businesses.

Walk before you Run

Its amazing, not a day goes by where a new technology comes out to disrupt the development pipeline. Older technologies may be retired by a vendor and there is the inevitable scramble to adapt to the new. As we are fast approaching 2024 and in my world a new release of Microsoft.Net I find I am focusing on some of the newer stack pieces such as Blazor, and Maui. As I never want to fully train on the job, though there is always a level of learning on all projects, it is my goal to have enough foundational knowledge to be able to start building a solution for a customer on day 1.

Maui is fairly new to me and I wanted to get back into some mobile development. There are may platforms out there from Apple (Swift, xcode) , and Google (Flutter) as well as others but since I am a Microsoft technology focused developer MAUI has made the most sense for me.

I have a customer called Alliance Environmental out of California that I have been working with for more then 15 years supporting and developing for their CRM system needs. Its been a great relationship and one I expect to continue for many years to come. The were using the Infor CRM mobile client. This client was Javascript based and provided the basic needs of accessing the CRM data. The problem is as in with any general solution that there are needs and functionality that is difficult to provide and the platform was limited to how to achieve the greater need of the service based business. That being said its been a while since their users have used that mobile client. It seemed to me to be a great opportunity to build out a POC on Maui and determine if the platform could indeed provide the capabilities needed to support the user base and their unique business cases.

So I rolled up my sleeves and did what I have done thousands of times in the past, opened up Visual Studio and created a new project. I took a pretty Agile approach and worked towards a MVP (Minimal Viable Project), creating the HTTP client access to the Infor CRM SData endpoints first and then building simple configuration and login views. Once I got that working I started to work on framework components such as DetailViewModelBase and ListViewModelBase. Its always good to think about the reusability of your component libraries and I focus on the extensibility of a platform from day one. So in about 8 or so hours I had login pages, and a main page showing navigation options. The great thing about MAUI is i can develop against windows and then deploy to devices or simulators at later times.

The navigation page started to come together and looks a little like:

Each nav button clicks through to a standard list/search view where a different data template is used to render the list results. Shown below is the accounts search screen.

By clicking on one of the Account items the detail view opens up displaying the most relevant information as well as child lists.

Now I have not been working on this project for long but in that short time I have been able to get networking, security, picklists, list views, detail views and child lists all working in a consistent and repeatable fashion so implementing new entities/workflows have been greatly simplified. Now this is only a POC and I am hoping that it becomes a product. Maybe of I get enough interest I can make it a more generic platform for partners to provide to their end customers. Only time will tell but my walk through MAUI as a mobile platform has been a success in my books.

Call to Action : If you are looking for a mobile application to be developed please think about including BITtelligent Software as a possible vendor to build it out for you. We would be more then happy to work with you in developing solutions that fit your needs.

Introducing …. Me…

Software development is what I am good at, and it has been good to me.

When I started developing code more then 30 years ago I did not need social media to advertise my skills. It was a different time and I would use contract companies to find me work. Further ahead in my career I was lucky enough to be exposed to the right industries and hand an insatiable skill to deliver end to end products. I built a company, employed other developers and built some incredible solutions for a large set of diverse businesses.

I am both business and technology. I marry the best of both worlds that enables a capability of taking a vision statement from conception to end product. As in a great line in a movie .. “Build it and they will come” I am able to take an idea and deliver a completed end product to enable a business to be empowered and reduce work through technology implementation.

My skills have allowed me to build products that were used throughout the world. From development tools, Mobile platforms, integration pipelines, Office add-ins and advance CRM customizations. I have been lucky enough to build products that target Windows, web and mobile platforms so the breath of solutions have been quite wide. The challenges have been large but I have met them and delivered to my customers each and every time I have been engaged.

As we go into uncertainty its good to connect with a development partner that has a history of delivering. I am that partner and look forward to working with new companies. If you are looking to develop a product to enable your business users please do think of BITtelligent. We have been a trusted partner for Infor, Sage, Act, and so many others for many many years ..

I await your email

Mark

This is suppose to be Easier

Got to be honest. Being a software engineer is a difficult proposition. Every day we here we will be replaced by no-code and Ai is going to eat our lunch. The anxiety and panic attacks that may reverberate through Silicon valley must be overwhelming. The fact is software development is hard. Our tooling and platforms fall short of their guarantees. Take for an example Microsoft Maui, a mobile platform to target Windows, Android and IOS .. Many others but these are the majority of users. The main goal is to abstract away the differences to provide a common framework for the majority of work items needed to be completed to build a common solution.

Now where my current gripe is focused is on common HttpClient communication. This should be the same for all platforms given the common use cases. I have found out that this is far from true and depending on the platform you need to do so many different things just to make a web request. This is where honestly Microsoft fails as the library should handle the different requirements on such a base set of functionality.

I’ve been able to get Windows, and Android requests working so far on my development effort, and will be tackling IOS next but I am disappointed in the Stack that I need to write so much different code to handle the simple function as making a HTTP request.

So what I am getting at is even though AI might be able to write boilerplate code its not quite ready for prime time when dealings with the nuances.

I still have a job, and I expect to have a job for a while longer ….

Outlook Themes/WPF Plugin

Another week and another customer. I have a customer that I built a Outlook plugin for that displays active CRM data. The challenge this weekend was to provide a more updated UI experience with theme switching. There were several hurdles I had to overcome to the current design and problems to solve. To accomplish this task I had to resolve the following

  1. Determine the color settings for each theme in outlook and build the appropiate .xaml resource dictionary for the matching theme
  2. Theme the controls, extracting templates and updating the resources to point to the custom colors/fonts
  3. Reconfigure each of the UI components to use the theme files
  4. Create a theme service/switcher to change the themes dynamically
  5. Create a service to determine when outlook changes a theme
  6. Test and enjoy a donut and coffee

For determining the colors required I took a brute force method. Switching to each theme in outlook, taking a snapshot image and using Gimp to extract the required component colors. There were 4 themes that I attacked Dark, White, DarkGray and Colorful. It did not take long to extract the colors.

For each of the controls such as DatePicker, Combobox, ListBox .. etc I extracted a copy of the style template. I then updated the colors and fonts using the new resources I created. This took some time and tweaking to make sure that rendering was not broken.

The project had many Controls, Panels and Dialogs, each had to be updated to point to the new resource dictionaries. This was not much problem however depending on the location of the resources I had to update the source uri’s appropriately. In the end it work as expected

The interesting part of theme switching was about how the resources were added to the underlying components. Theme switching constitutes replacing one ResourceDictionary for another. For my case I just ensured that the style dictionary was in position 0 in the underlying component’s merged dictionaries. Basically just:

userControl.Resources.MergedDictionaries.RemoveAt(0);
userControl.Resources.MergedDictionaries.Insert(0, resourceDictionary);

I did find have an initial issue as I was not seeing my active changes however when I updated my components to use DynamicResource instead of StaticResource the UI updated correctly.

Digging around the internet to find out if VSTO provided any kind of notification for theme switching led me to an answer of NO. So I kept researching and found out that when Office updates the theme it writes the value to the registry. Given that I could poll the registry for changes I wrote a service to read the UI Theme value and on a change published an event to the outlook plugin. Once the event notification was received the theme switcher updated each of the UI components.

I was successful this weekend in updating plugin to use theming, and added a level of polish and professionalism that I believe my client will appreciate.

Salesforce Migration to Infor Crm

So I have this customer who is acquiring businesses at a rapid pace. Usually when this happens integration of systems or migration into the companies systems need to occur. This is where I get involved, as I have a life time of experience with system integration and data migration.

The project at hand was to migrate the data from SFDC into Infor CRM. I had not done a SFDC migration as of yet and was not sure of the effort or my plan of attack, however like all systems when there is a will there is a way. I knew there were tools out there to assist but I had to weigh the costs, time for training and any support for using a tool that ultimately is for a one time effort. So I did what I find most comforting, I rolled up my sleaves and dug in, learning how to extract the data out of Salesforce, doing a full review and creating a import solution for the primary data available. For this specific customer after review it seemed focus was around Accounts, Contacts, Opportunities, and Attachments (Documents).

After reviewing the data export from Salesforce I decided to build a custom service in Infor CRM to do the load. This way I could control the mapping, pre-processing, etc. as well as make sure that any and all business rules are executed ensuring consistent data after the process was completed.

I created the service and some base classes for a import file, so that for each of the entities that had to be imported I only had to focus on the differences in process and have the highest level of reusability. The only really interesting part was the pre-processing I had to do on the exported documents. You see the files are returned without a filetype prefix. This had to be discovered by looking at a .csv file and marrying up the data to the file. I decided to preprocess all the files outside of the Job Service data loader to ensure that the files were readable.

So after a weekend of building, testing and refining the process I was able to import all the data into Infor CRM, and navigate around and confirm all the entities, and their relationships were brought in successfully.

I have to say I do love to code still after all this time, and glad that I could provide great services to another customer. If you have an integration/migration need please do keep me in mind.

Included with Subscription, or Not?

News came out this week that the FTC might be going after Amazon for misleading subscription and billing behavior’s as well as other things. I did not give it much thought until I received an marketing email about my prime video subscription. Looking at the new streaming options available and included with my prime subscription I noticed the new Flash movie was advertised as “Included”, see the content that was provide to me:

Now as you can see it states that the movie is included. I pay for the subscription so I thought what the hell I will stream it while writing some code. I head over to the prime video website and look for the Flash movie and low and behold it is there, but …. only if I rent the movie. So no its not included and this marketing email is clearly a mistruth.

What are your thoughts? is this deceptive? No where on the marketing email did it state that there was an additional charge.

Seems Like a Lifetime Ago …

Wow, cannot believe how time has flown by. The last time I posted was in 2016. Crazy eh! You would think I would be more active on this site. Alas it fell to the way side as life was lived, customer served and other important aspects of life took precedence.

Well I am back, and now will be more active on my blogging. More for this to be a journal of my journey moving forward. Technology has changed and we are moving into a new world. One where AI is the new secret sauce companies are adopting to automate, connect, learn and scale their businesses. BITtelligent is no different in the need to consume AI. As a small company AI allows for the possibilities of enhancing the development and support processes. It has never been more possible for solo-entrepreneurs to create and deliver their ideas then ever before. I am excited with this future, and a little nervous but the fact is you need to embrace AI in your practice if you want to compete. If you do not you will be left by the wayside.

In the past I have provided services for many CRM companies. Providing integration tools, platform development toolchains, client side application such as XBar for Infor CRM and Act! Outlook Connector for two wonderful companies out of Arizona. I have also been a partner in CRM platforms and created 100’s if not 1000’s of customizations spanning businesses from Banking, Remediation Services, Auto Tooling, Paper Manufactures, Retail as well as so many others. To say I have been exposed to so many different types of businesses and have had a hand in their automation would be an understatement of the blessings I have had in my career.

Now I am excited with the new technology stacks that are evolving in front of out eyes. I am interested in several platform tool chains that still stay within my knowledge wheelhouse. First I am really loving what is going on in the Blazor.net community, and also when looking at multiplatform mobile targeting I feel that .Net Maui would greatly enhance any development services I can offer to my current and future clients.

No I am currently not working with any CRM company directly in their development tooling, or clients and I have a headful of ideas and experience. I also need to get deep into both Blazor and Maui so I have decided to go on a development quest. On this journey I will be creating a new CRM application, with development experience, an Outlook extension, and a mobile client. I will be using Blazor, Maui, Entity Framework, WebApi, and a ton of nuget packages to round out any functionality. From a UI framework I will utilize Developer Express components to add a professional richness. As I continue on this journey if I add to the tooling I require I will document those adds in this blog.

Hopefully I will be able to setup a site, and downloads as I am developing the platform to allow for people to play with the client and provide feedback. Who knows at the end of this journey maybe I might be in a position to make a business out of selling and supporting the platform. Time will only tell.

Enough for this post, glad to be back and please come back often as I will be far more active then before.

Cheers

Kinda Back

its been a while since I last blogged. Unfortunately life gets in the way and its has been very busy with the company. I am hoping to be able to blog more often as I get back on track of sharing information on development and now Infor CRM (formally Saleslogix). Shortly I will be heading to Build 2016, the Microsoft developer conference and I am looking forward to see the direction of the platform (OS) as well as the development tools. Just recently Xamarin announced it was acquired by Microsoft, and as a certified Xamarin developer I am also looking for more information with regards to Microsofts direction of the tooling. Finally I have been accepted into the Hololens developer program, and will be attending a developer session while in San Francisco. It will be great to kick the tires on some actual equipment.

Not much to add at the moment, other then Infor CRM 8.3 should be released really soon …

 

Posting Quotes in MAS from ERPLink

One of our customers required posting quotes from Saleslogix into MAS. Though the transaction type was available it was not possible to actually post anything except for a standard order. It seems that the spSOApiSalesorderIns stored procedure had a fixed transaction type of 801 (order) where as quote would have needed a value of 840.

We have updated the stored procedure to now accept a transaction type (801, 840) and when selecting either an ‘Order’ or ‘Quote’ the correct type will be passed down and processed as expected.

This updated will be in the next version of ERPLink 2014.