Improving Software Solutions & CRM Systems

Spitfire Software House's blog discussing software methodologies, tooling and CRM approaches

Accurate Estimates using Knowledge Coverage

The term 'Software' or 'Systems' can often send a shiver down many employees' spines.  Their experience with Information Systems won't just include the time they've spent using packages but also the time invested in helping with the initial set-up.  The changing of a key IT system involves both parties inside and outside of the business, where people have different areas of expertise, whether it be the technical aspect or the business domain.  This often causes a gap between the people delivering the product and those requesting the product, where requirements are misunderstood or not delivered.  To mitigate this the IT industry has developed and adapted to use agile methodologies, a concept of regularly receiving feedback for smaller chunks of work.

There is no doubt that this has helped reduce the number of IT projects overspending and being delayed however problems still exist.  Stakeholders still face frustration due to shifting timescales especially when there is no guarantee that the issue won't reoccur.  This issue not only causes friction between vested parties but also incurs costs as dependent tasks are rescheduled or delayed.  To tackle delays we'll look at how developers can prioritise their work within a sprint to improve the accuracy of the timescales given using a technique we call Development by Knowledge Coverage but before that we will look at techniques that have helped shape our approach.

No Estimates Approach

One of the many great podcasts produced by the .Net Rocks guys featured Woody Zuill and discussed delivering software with no estimates.   In the podcast Woody discusses the reasoning behind why you need an estimate and explains that a bad or wrong estimate on a unit of work is of no use and in certain cases can by worse than no estimate at all.  


Take for example a software company readying themselves for a major release of software across multiple servers who schedule deployments with the Dev Ops Team, the subsequent training to the supporting business teams and finally a marketing dialogue with their customers readying them for changes to their service.  If all of these subsequent tasks have been built on a ill thought out estimate it can have costly ramifications.  Compare this with a company who doesn't give estimates, while they're not necessarily able to plan effectively for the future they are able to mitigate the risk of incurring resourcing costs from bad estimates.   

With this hypothesis in hand, Woody explains that it's much better for everyone if the developer advises end users on requirements that can be quickly realised.  This is a great approach when it can be employed fully however there are instances you find it won't meet your businesses' planning requirements.  

Holding a Pre-Mortem

Gary Klien author of 'Seeing What Others Don't' suggests that human behavior makes it very difficult to manage projects and ascertain completion rates of tasks.  It's such common practice for workers to start a task and claim they're 10% into the problem, for them then to quickly skip over to 90% in a day but then spend a week or so slowly incrementing their way up to 100%. Similarly people will often commit to completing a task to their project lead and supply updates of varied success only for a deadline to loom and the lead to be told there will be a delay or the task is not possible.  Klien relates this to people being all too aware of how tightly bound their success in completing tasks can be to their perceived ability which in turn can have an impact on their earning potential.  

With this observation Klien proposes a pre-mortem a meeting before the project starts to catalog the ways in which the project could fail. By harnessing people's pessimism in a productive way you gain foresight usually based on prior learning in other projects, nevertheless this is done in a positive way.  Compare this approach to an informal discussion by colleagues discussing the impending doom of an in-flight project, all employees can work together rather than creating an environment of isolation where blame is proportioned even before true failure of missed deadlines have been realised.

Knowledge Coverage

When simply applying Klien's approach to software development we will no doubt encounter programmers claiming no deadlines can be given due to an incomparable solutions, how can someone give an estimate if they've not completed the task before.  Conversely you can normally get a developer to accurately determine the time required to build a CRUD page but maybe not the integration with a new API.  

The problem exists in acquiring an estimate at the beginning of the project when there are far too many variables to be able to accurately give a quote.  That said an estimate will be given and work commence.  Typically without any advice on prioritisation a developer may pick up the most interesting task first and leave the difficult task to the end, it's human nature, after all there's always a chance the programmer could have the fun task taken from them and reallocated to another programmer especially in an enterprise work environment.  

This approach will incur costs as the developer only realises at the end of the project that their estimate was wrong.  This means any dependent tasks related to a software release such as deployment activities or the alignment of radio or TV marketing will have to be postponed.

199,63false0,00,3.9375#3D8546FF#3D8546DB#B2B7B5FF2|BORING TASK<br />ABeeZee|bold|normal|13px|none#000000FF1,1
BORING TASK
199,63false0,00,3.9375#3D8546FF#3D8546DB#B2B7B5FF2|FUN TASK<br />ABeeZee|bold|normal|13px|none#000000FF1,1
FUN TASK
199,63false0,00,3.9375#3D8546FF#3D8546DB#B2B7B5FF2|DIFFICULT TASK <br />ABeeZee|bold|normal|13px|none#000000FF1,1
DIFFICULT TASK
199,63false0,00,3.9375#990000FF#990000DB#B2B7B5FF2|<span style="font-weight: bold;"><span style="font-family: ABeeZee;">DIFFICULT TASK  UNSCHEDULED<br /></span></span>ABeeZee|bold|normal|13px|none#000000FF1,1
DIFFICULT TASK  UNSCHEDULED
199,16799,16falsetruestraightfalse#666666FF2|Original EstimateABeeZee|normal|normal|12px|none#000000FF1,1 Original Estimate #99000033 0,16199,16falsetruestraightfalse#990000FF2|Over Run ABeeZee|normal|normal|12px|none#990000FF1,1 Over Run false100,0falseGo Live#000000FFABeeZee|normal|normal|13px|none0,0 Go Live 199,63false0,00,3.9375#990000FF#990000DB#B2B7B5FF2|DEV OPS TASK<br />ABeeZee|bold|normal|13px|none#000000FF1,1
DEV OPS TASK
199,63false0,00,3.9375#990000FF#990000DB#B2B7B5FF2|MARKETING TASK<br />ABeeZee|bold|normal|13px|none#000000FF1,1
MARKETING TASK
17.752319999999997,808.876159999999999,08.876159999999999,017.752319999999997,4017.752319999999997,408.876159999999999,808.876159999999999,800,400,40#FFFFFFFF#666666FF2|Helvetica|normal|normal|12px|none#000000FF1,1 20,8010,010,020,4020,4010,8010,800,400,40#FFFFFFFF#FFFFFFFF2|Helvetica|normal|normal|12px|none#000000FF1,1 false100,0falseDevelopment#000000FFABeeZee|bold|normal|13px|none0,0 Development false100,0falseTasks#000000FFABeeZee|bold|normal|13px|none0,0 Tasks 17.752319999999997,808.876159999999999,08.876159999999999,017.752319999999997,4017.752319999999997,408.876159999999999,808.876159999999999,800,400,40#FFFFFFFF#666666FF2|Helvetica|normal|normal|12px|none#000000FF1,1 20,8010,010,020,4020,4010,8010,800,400,40#FFFFFFFF#FFFFFFFF2|Helvetica|normal|normal|12px|none#000000FF1,1 false100,0falseOther IT #000000FFABeeZee|bold|normal|13px|none0,0 Other IT false100,0falseTasks#000000FFABeeZee|bold|normal|13px|none0,0 Tasks 17.752319999999997,808.876159999999999,08.876159999999999,017.752319999999997,4017.752319999999997,408.876159999999999,808.876159999999999,800,400,40#FFFFFFFF#666666FF2|Helvetica|normal|normal|12px|none#000000FF1,1 20,8010,010,020,4020,4010,8010,800,400,40#FFFFFFFF#FFFFFFFF2|Helvetica|normal|normal|12px|none#000000FF1,1 false100,0falseExternal /#000000FFABeeZee|bold|normal|13px|none0,0 External / false100,0falsenon-IT Tasks#000000FFABeeZee|bold|normal|13px|none0,0 non-IT Tasks

This can expose your business to incurring costs whether it be from a supplier charging you for scheduled resource that can't be reallocated or less tangible costs such as the time spent realigning the business to release the software later.  The Dev Ops team will have to change their plans for any overlapping releases as they focus on the delayed project and the time spent clearing up the knock-on effect can often be considerable.  Businesses can position themselves to manage these delays by only ever scheduling a percentage of their resource leaving a remaining percentage to deliver unscheduled activities, however, this approach hinder a team from delivering it's capacity while it protects itself from unforeseen spikes in workload.

199,63false0,00,3.9375#3D8546FF#3D8546DB#B2B7B5FF2|BORING TASK<br />ABeeZee|bold|normal|13px|none#000000FF1,1
BORING TASK
199,63false0,00,3.9375#3D8546FF#3D8546DB#B2B7B5FF2|FUN TASK<br />ABeeZee|bold|normal|13px|none#000000FF1,1
FUN TASK
199,63false0,00,3.9375#3D8546FF#3D8546DB#B2B7B5FF2|DIFFICULT TASK <br />ABeeZee|bold|normal|13px|none#000000FF1,1
DIFFICULT TASK
199,63false0,00,3.9375#990000FF#990000DB#B2B7B5FF2|<span style="font-weight: bold;"><span style="font-family: ABeeZee;">DIFFICULT TASK  UNSCHEDULED<br /></span></span>ABeeZee|bold|normal|13px|none#000000FF1,1
DIFFICULT TASK  UNSCHEDULED
199,16799,16falsetruestraightfalse#666666FF2|Original EstimateABeeZee|normal|normal|12px|none#000000FF1,1 Original Estimate #99000033 0,16199,16falsetruestraightfalse#990000FF2|Over Run ABeeZee|normal|normal|12px|none#990000FF1,1 Over Run false100,0falseGo Live#000000FFABeeZee|normal|normal|13px|none0,0 Go Live 148,63false0,00,3.9375#3D8546FF#3D8546DB#666666FF2|MARKETING TASK<br />ABeeZee|bold|normal|13px|none#000000FF1,1
MARKETING TASK
0,1553,15truetruestraightfalse#000000FF2|ABeeZee|normal|normal|12px|none#990000FF1,1 193,63false0,00,3.9375#3D8546FF#3D8546DB#666666FF2|DEV OPS TASK<br />ABeeZee|bold|normal|13px|none#000000FF1,1
DEV OPS TASK
189,63false0,00,3.9375#FF6600DB#FF6600DB#666666FF2|CHARGED RESOURCE FROM MARKETING<br />ABeeZee|bold|normal|13px|none#000000FF1,1
CHARGED RESOURCE FROM MARKETING
17.752319999999997,808.876159999999999,08.876159999999999,017.752319999999997,4017.752319999999997,408.876159999999999,808.876159999999999,800,400,40#FFFFFFFF#666666FF2|Helvetica|normal|normal|12px|none#000000FF1,1 20,8010,010,020,4020,4010,8010,800,400,40#FFFFFFFF#FFFFFFFF2|Helvetica|normal|normal|12px|none#000000FF1,1 false100,0falseDevelopment#000000FFABeeZee|bold|normal|13px|none0,0 Development false100,0falseTasks#000000FFABeeZee|bold|normal|13px|none0,0 Tasks 17.752319999999997,808.876159999999999,08.876159999999999,017.752319999999997,4017.752319999999997,408.876159999999999,808.876159999999999,800,400,40#FFFFFFFF#666666FF2|Helvetica|normal|normal|12px|none#000000FF1,1 20,8010,010,020,4020,4010,8010,800,400,40#FFFFFFFF#FFFFFFFF2|Helvetica|normal|normal|12px|none#000000FF1,1 false100,0falseOther IT #000000FFABeeZee|bold|normal|13px|none0,0 Other IT false100,0falseTasks#000000FFABeeZee|bold|normal|13px|none0,0 Tasks 17.752319999999997,808.876159999999999,08.876159999999999,017.752319999999997,4017.752319999999997,408.876159999999999,808.876159999999999,800,400,40#FFFFFFFF#666666FF2|Helvetica|normal|normal|12px|none#000000FF1,1 20,8010,010,020,4020,4010,8010,800,400,40#FFFFFFFF#FFFFFFFF2|Helvetica|normal|normal|12px|none#000000FF1,1 false100,0falseExternal /#000000FFABeeZee|bold|normal|13px|none0,0 External / false100,0falsenon-IT Tasks#000000FFABeeZee|bold|normal|13px|none0,0 non-IT Tasks 199,16345,16falsetruestraightfalse#666666FF2|ABeeZee|normal|normal|12px|none#000000FF1,1
When a delay is is finally omitted to the project team their ability to deal with the delay is limited due to the options they have open to them.  Inevitably resource will asked to work smarter, seeking alternative options and in some instances this may be possible.  This could for example be getting resource from the development team to help with its installation.  The problem will generally come from third parties who're less likely to be that flexible with their resource when the issue has resulted from a problem on your

By getting the developers to implement these components first you address the area of 'the unknown' first.  This obviously means you're unable to deliver an accurate estimate until these are completed.  It can often cause frustration to developers giving estimates for items of work that are unquantifiable, by not asking them for these figures it can go someway to building a relationship between the technical and non-technical parties.  


As with all approaches when estimating technical aspects of work this approach won't save you from giving inaccurate dates but it would give a framework for your developers to work against.  Using the doomsday scenario previously mentioned where a software company has multiple cross departmental activities scheduled dependant on the code being released using the approach of knowledge coverage you'd be able to inform the dependant parties of any slips in the dates.  


199,63false0,00,3.9375#3D8546FF#3D8546DB#B2B7B5FF2|DIFICULT TASK<br />ABeeZee|bold|normal|13px|none#000000FF1,1
DIFICULT TASK
199,63false0,00,3.9375#3D8546FF#3D8546DB#B2B7B5FF2|<span style="font-weight: bold;"><span style="font-family: ABeeZee;">BORING TASK<br /></span></span>ABeeZee|bold|normal|13px|none#000000FF1,1
BORING TASK
199,63false0,00,3.9375#3D8546FF#3D8546DB#B2B7B5FF2|FUN TASK<br />ABeeZee|bold|normal|13px|none#000000FF1,1
FUN TASK
199,63false0,00,3.9375#990000FF#990000DB#B2B7B5FF2|<span style="font-weight: bold;"><span style="font-family: ABeeZee;">DIFFICULT TASK  UNSCHEDULED<br /></span></span>ABeeZee|bold|normal|13px|none#000000FF1,1
DIFFICULT TASK  UNSCHEDULED
199,16999,16falsetruestraightfalse#666666FF2|EstimateABeeZee|normal|normal|12px|none#000000FF1,1 Estimate 199,63false0,00,3.9375#3D8546FF#3D8546DB#B2B7B5FF2|<span style="font-weight: bold;"><span style="font-family: ABeeZee;">DEV OPS TASK<br /></span></span>ABeeZee|bold|normal|13px|none#000000FF1,1
DEV OPS TASK
199,63false0,00,3.9375#3D8546FF#3D8546DB#B2B7B5FF2|<span style="font-family: ABeeZee;"><span style="font-weight: bold;">MARKETING TASK<br /></span></span>ABeeZee|bold|normal|13px|none#000000FF1,1
MARKETING TASK
#00000033 0,16199,16falsetruestraightfalse#990000FF2|No Estimate GivenABeeZee|normal|normal|12px|none#990000FF1,1 No Estimate Given false100,0falseGo Live#000000FFABeeZee|normal|normal|13px|none0,0 Go Live 17.752319999999997,808.876159999999999,08.876159999999999,017.752319999999997,4017.752319999999997,408.876159999999999,808.876159999999999,800,400,40#FFFFFFFF#666666FF2|Helvetica|normal|normal|12px|none#000000FF1,1 20,8010,010,020,4020,4010,8010,800,400,40#FFFFFFFF#FFFFFFFF2|Helvetica|normal|normal|12px|none#000000FF1,1 false100,0falseDevelopment#000000FFABeeZee|bold|normal|13px|none0,0 Development false100,0falseTasks#000000FFABeeZee|bold|normal|13px|none0,0 Tasks 17.752319999999997,808.876159999999999,08.876159999999999,017.752319999999997,4017.752319999999997,408.876159999999999,808.876159999999999,800,400,40#FFFFFFFF#666666FF2|Helvetica|normal|normal|12px|none#000000FF1,1 20,8010,010,020,4020,4010,8010,800,400,40#FFFFFFFF#FFFFFFFF2|Helvetica|normal|normal|12px|none#000000FF1,1 false100,0falseOther IT #000000FFABeeZee|bold|normal|13px|none0,0 Other IT false100,0falseTasks#000000FFABeeZee|bold|normal|13px|none0,0 Tasks 17.752319999999997,808.876159999999999,08.876159999999999,017.752319999999997,4017.752319999999997,408.876159999999999,808.876159999999999,800,400,40#FFFFFFFF#666666FF2|Helvetica|normal|normal|12px|none#000000FF1,1 20,8010,010,020,4020,4010,8010,800,400,40#FFFFFFFF#FFFFFFFF2|Helvetica|normal|normal|12px|none#000000FF1,1 false100,0falseExternal /#000000FFABeeZee|bold|normal|13px|none0,0 External / false100,0falsenon-IT Tasks#000000FFABeeZee|bold|normal|13px|none0,0 non-IT Tasks

It does assume the developer is able to understand the requirements and analyse their skill set and deliver an estimate without prejeduce.

This approach should obviously be used in tandem with other good practices such as coherently explaining the scope of the requirement which can often mean explaining to the end user what functionality will not be included in your work and not just focusing on what will be included.  As a rule of thumb anything you can do to minimise the area-of-the-unknown between the requester and producer of work should only be seen as a good thing.

Independent CRM Release Notes 1.0.12.0

Details of all the changes in 1.0.12.0 can be seen here.

Great but can it go faster?


We received feedback that our customisable pages slowed when there were many modifications were made to it.  After an investigation it was found the validations for the fields were inefficiently loaded.  The validations are the warnings that are shown when a field does not meet a certain rule for example 'ABC' entered into a number field.  We have re-engineered the code and improved the performance of the system.

The tests results below were from an external network on a Windows 7 machine using Chrome as the web browser.  The times are taken from the Chrome debugging tool kit and are for the full time to load without any caching.  The page used was a Sales Opportunity with 60 fields including multiple groupings, all with the aim of showing performance on a highly customised page (worst case scenario).



v1.0.11.2v1.0.12.0
Page in Edit Mode - Test 17.04s3.57s
Page in Edit Mode - Test 26.49s3.41s
Page in Edit Mode - Test 36.54s3.43s
Page in Create Mode - Test 17.18s2.37
Page in Create Mode - Test 26.45s2.55s
Page in Create Mode - Test 36.51s2.02s

Confirm a Delete

We were told that it was too easy to delete a record accidentally, to make this harder we've added a warning message that you'll have to confirm in order to delete the record.   


NB you will need the permission to Delete the record type for the Delete button to show on any record you need the required permission i.e. Delete Company.  If you have the requisite permission and you click Delete then you will see the above alert.

Greater Control on Sales Items

We have split out Opportunities and Sales Order permissions as shown below:

  • Create Sales Opportunity
  • Update Sales Opportunity
  • Delete Sales Opportunity
  • Create Sales Order
  • Update Sales Order
  • Delete Sales Order

This means you can have certain members of your team allowed to create opportunities and others dedicated to updating and closing the opportunities, with another team focussed on processing the sales orders.

Finally some bug fixes

The main bug fixed in this release was the remedying of an issue with the Static Reference Field.  The Static Reference Field pulls through a specific data on a related record, this can be the notes from the last activity against a company record or the date from the most recent history item on a contact to show last contact date.  Unfortunately the field pulled through deleted records meaning incorrect data could be shown.  This has been fixed along with other issues in v1.0.12.0.

Independent CRM Release Notes 1.0.11.0

October saw the release of 1.0.11.0, let's have a look at the benifits that our customers received for no additional cost.


New Field Type - Static Reference Field


This new version brings with it the possibility of linking records, pulling various bits of data from different but related records.  It delivers the ability to save clicks on your main records and improve navigation by pulling data into the parent record.  Take for example a Company record which is configured to have History items, the Company record could have multiple history items especially if this is a lead with an on-going dialogue.  The Static Reference Field allows you to link from the Company record to the Last History record pulling through the notes on that History record as shown below. 




This gives you the customer the data you want, where you want it without the need for duplicating data.  The data will be displayed as a link which when clicked on will navigate you directly to the source of that data, in this instance the last History record created against the Company.

In order to achieve this new field we changed the previously named 'Reference' field to 'Dynamic Reference'.  All customers have had their data retrospectively fixed so you only need to be aware of this when creating new fields.

Entity Lists now with more Entity


The Entity List control previously only searched for Contact names and Company names.  Now the list will auto-complete for other records (History, Activity, Sale Opportunity and Sales) but will only search for the code values for the records unlike the contact and company functionality which search for either the company name or the contact name.  This change will be set to your current fields, meaning if you currently have an Entity List Auto Complete field on a page it will now extend to search for other records.

More Search Filters


1.0.9.0 saw us introduce more filters for fields that are of types User and Lists and now in 1.0.11.0 we bring you search filters for Yes No fields and Decimals.  



The decimal filter will work with a number or a number that contains a decimal place and contains the same values; equals, not equals to, more than and less than.

Items, forget about them


well if you want you can.  Previously it was possible to set the height of the items section in both the Sale Opportunity and the Sale Order to 0 which in effect hid the items out of view.  This is useful for customers that who aren't working with an inventory style product set, this will have been you if we've set your CRM up with no products.  This was a temporary work around to hide the items section.  




You're now able to completely hide the order items on the Opportunity and Sales Order screens without using this work around.  This is achieved by setting the IncludeItemsForSales account property to false.  This is a global setting and will impact all users on your account.  

If you have any items in the system and are considering hiding the items do not fear, all the data in the background will remain, this is simply a User Interface setting that will not impact any of the underlying data.  As with everything if you have any concerns please give us a call and we will discuss the implications.

Bug Fixes


There were a couple of bugs that have been fixed both relating to the forgotten email reminder.  There was an issue where some users would not receive a Forgotten Email Reminder if their account didn't meet certain criteria, this has now been fixed and finally we have improved the formatting of the email to make it easier to read for certain email clients.  

If you are one of our users and would like to raise a bug or a new feature request please log into the Customer Portal, we love getting feedback from our users so if you've not made a feature request please give it a go.

Regards,

Spitfire Software House Team

Independent CRM - Email Integration

With the release of 1.0.12.0 we see integration with your email clients and calendars.  You're now able to select activities in Independent CRM and pull a copy of them down to your email client whether this be your apple device or into Microsoft Outlook.  

* this tutorial is done using Chrome running on Windows OS and Outlook 2013.

Step 1. Find your activity and click Export to Calendar.


Step 2. A file be created, click to open it.


Step 3.  Save the Appointment.



This lightweight approach allows you to synchronise activities in your Independent CRM instance with your email on a selective basis therefore reducing the risk of automatically clogging up your email client.

The appointment takes data from Independent CRM and defaults a number of values in your email client, below are the mappings.


Independent CRM FieldEmail Client
Create UserOrganiser
Start Date TimeAppointment Start Date
* Duration is 15 minutesAppointment End Date
Company Name / Contact Name + TitleAppointment Subject
DescriptionAppointment Notes

Please Note

This is a disconnected solution, this means that there is no connected association with the Activity in the CRM and the event in your calendar, rather it should be seen as a copy of your activity and if you amend your Activity in the CRM you will have to replicate the changes in your calendar as well. 

You will need the permission CreateICSFile file, without this you will not be able to see the Export Activity button.

Spitfire Software House Support Team

Independent CRM Release Notes 1.0.10.0

Another week and some more release notes, these detail the main changes in 1.0.10.0.

Hide System Fields

This change has been highly sort after but and has finally arrived.  You can personalise Independent CRM to your specific needs by adding custom fields allowing you to store whatever data you want.  There are however some fields the system needs to work, these can include the codes that we give to each of your records or some of the system time stamping that we do to trace data.  That said we appreciate that these aren't necessarily things that you want to see, things that the system treats as first class citizens aren't necessarily things that you yourself would judge as important.  With this in mind we now give you the power to hide fields to tidy up your forms.  The underlying data will still be created, so we'll still time stamp your data but you don't have to see it or at least not if you don't want to.  Any decision that you make with regards to hiding fields can be undone in the administrator portal.




Below is a list of all the system fields as of version 1.0.10.0:


Company

  • Code
  • Create Date Time
  • Create User
  • Company Name
  • SIC Code
  • Campaign 
  • Lead Source

Contact

  • Code
  • Create Date Time
  • Create User
  • Parent Code
  • Salutation
  • First Name
  • Last Name
  • Job Title
  • Department
  • Mobile
  • Email
  • Twitter Account
  • Lead Source 
  • Campaign
  • Is Email Subscribed
  • Is SMS Subscribed
  • Is Twitter Subscribed
  • Contact Preference
Address

  • Code
  • Create Date Time
  • Create User
  • Address Line 1
  • Address Line 2
  • Address Line 3
  • County
  • Town
  • Area Code

Activity

  • Code
  • Create Date Time
  • Create User
  • Parent Code
  • Title
  • Description
  • Start Date Time
  • Activity Result

History

  • Code
  • Create Date Time
  • Create User
  • Parent Code
  • Title
  • Description
  • Start Date Time
  • Activity Result
  • Completed User
  • Complete Date Time

Sale Opportunity

  • Code
  • Create Date Time
  • Create User
  • Parent Code
  • Sale Opportunity Status
  • Total
  • Estimated Close Date Time

Sale Order

  • Code
  • Create Date Time
  • Create User
  • Parent Code
  • Sale Opportunity Status
  • Total

Note

  • Code
  • Create Date Time
  • Create User
  • Parent Code
  • Title
  • Description

File

  • Code
  • Create Date Time
  • Create User
  • Parent Code
  • File Name
There may be a temptation to remove lots of these fields but we recommend that double check that it's not used.  Many of the fields are great for helping you investigate things or communicate with a colleague.  Whether it be chatting about possible duplicates or working out whether a lead is new or old, these fields could be important to you.

Just Dates

Up till now DateTime fields have been mandatory meaning when they were drawn onto the page a default value was given to them of the date and time the page was loaded.  This caused problems when, in some instances a user wanted to leave a value blank.  Assume we want to store a customer's renewal date for a contract and therefore have a field RenewalDate stored against a contact.  Previously when the page loaded it would have defaulted the date time to the date and time that you created the contact record.  To change this we've taken the Include Blank Option property against the Object Property field on all Date Time fields and use this to see whether you want to keep the behavior where the Date Time defaults or whether it should be left blank.  If you set "Include Blank Option" to be True and save the contact record mentioned above the contract renewal date will be blank when you create the contact.



So just to go over that point again guys this rather integral change is backwardly compatible with your current configurations all we've done is give you the power to decide whether you want to keep it or change it to allow blanks.  If anyone wants a chat about this please don't hesitate to call us.

Clarity when Filtering Searches


In previous versions of Independent CRM some of the Search Filters caused confusion due to a lack of clarity on the underlying data.  This was split into two types of problems; firstly there wasn't always an option for 'any', 'all' or 'anyone', this meant that a filter was always applied even if you didn't want one.  This was sometimes not too obvious meaning you may not have thought a filter was being applied when it was.  The second issue that we've addressed is making sure all filters give you the option to select is blank or empty.  This is probably best explained through an example:  take for example a Yes, No field which in the system is displayed as a check box (when in edit mode).  Initially you would think that there are two options, either 'Yes' or 'No' however there is the possibility that this data is not set. 




In the example above where we have a Search Filter against a list property called Share Status you can select 'Any' if you're not interested in filtering out any of the records by Share Status.  Then you could filter by records that are not set by selecting 'Is' and 'blank or empty' alternatively you can filter by options that are populated.  You could then see which companies are 'Is' 'Sell' or 'Isn't' 'Buy'.  The important thing to be aware of here guys and girls is properties that aren't set will not be picked up in the 'Isn't' option.  

If you have any questions let us know but we're sure you'll love our new changes.


Independent CRM Release Notes 1.0.9.0

Deployment of 1.0.9.0 has been successful and it's got lots of goodies in there for you.  This version contains many new features that we're hopeful we make your user experience even more enjoyable.

Search Filter Improvements

Let's kick off with the biggies; you can now create Search Filters on fields that are types of lists and users.

Filter Lists

By setting a list field to be a filter on your search you'll be presented with the options of "Is" or "Isn't" your selected value.  The options that you'll be presented with as possible values will be specific to the values of the list, in the example below we have a field called 'Share Status' and an option as 'Don't Buy'.  It's important to note that the list options will be all the options in the list even if that item isn't in the list.  Like all previous filters you're able to set the default behavior so if you want the search to atomically filter down the result for everyone when they see the page you're able to do this in the administrator panel.


Filter Users


The user filter is a great way to see what work is allocated to different people if you're working in a team environment.  All users that are setup for your account will be displayed in this list, if you whatever reason you find a user that should have been removed please log a ticket in the Support Centre so we can get this remedied.  Another new feature of the user filter is the ability to default the selected user to "{me}".  By setting this the page will automatically default to the logged in user thus providing a great way to create a single search but personalise it to all users.

Field Groupings


There have been previews to the Grouping functionality but now you can see it for yourselves.  Grouping is a feature designed to clean up data intensive forms, we know that as your business grows your data needs grow.  Whether it's capturing extra data about your customers' needs or extending your Sales Opportunity to give you more forecasting information you can now create more fields without feeling like you're cluttering the page.



There is no restriction to the number of groups you can add but this feature is designed to clean-up the look and feel and we would not recommend creating a group for each field, rather create logical groupings for your fields.  As this feature reduces clutter as default the groupings are all collapsed however you are able to override this in the administration panel.  The expansion override will be set for all users on your system for use it wisely.

DateTime Field Changes


Up till now DateTime fields have been mandatory meaning when they were drawn onto the page a default value was given to them of the date and time the page was loaded.  This caused problems when, in some instances a user wanted to leave a value blank.  Assume we want to store a customer's renewal date for a contract and therefore have a field RenewalDate stored against a contact.  Previously when the page loaded it would have defaulted the date time to the date and time that you created the contact record.  To change this we've taken the Include Blank Option property against the Object Property field on all Date Time fields and use this to see whether you want to keep the behavior where the Date Time defaults or whether it should be left blank.  If you set "Include Blank Option" to be True and save the contact record mentioned above the contract renewal date will be blank when you create the contact.



So just to go over that point again guys this rather integral change is backwardly compatible with your current configurations all we've done is give you the power to decide whether you want to keep it or change it to allow blanks.  If anyone wants a chat about this please don't hesitate to call us.

Independent CRM Incident - Unable to page on Searches

Incident Description (AINCI0000000002)


When clicking on any existing search you would have received a blank page rather than the next page of data, this would have been for you opportunities, contacts, companies, all your data.  You would still have been able to filter your searches to try and find specific records and use the global search functionality to get to those records out of reach on the first page.


Timeline of Events


For the past few weeks we have carried out a number of releases providing more and more functionality all of which have gone without an issue however release 1.0.11.0 on Monday 5th October a bug was released with the system.  The good news is it was isolated to a section of the system we were able to deploy a fix to all customers in a timely fashion.


ClassificationDate Time
Ticket Raised2015-10-05 09:55
Ticket Classified2015-10-05 10:00
Issue Resolved2015-10-05 10:20


What Now?


A service credit will be applied to all customers accounts in accordance with your contract.  The Incident was classified as a P2 outage and not a P1 as you were able to log in and use the system, we've decided not to classify this as a P3 due to the workarounds being dependent on your instance configuration and we don't want to treat our customers differently.  It will appear on your October invoice as a deduction against Incident AINCI0000000002 for 25 minutes.

To make steps towards stopping this from happening again we have also extended our automated testing to capture these scenarios in an effort to  capture the issue before it moves into production.

We strive to deliver the best customer service we can and when there is an issue we aim to resolve it in a timely fashion and recompense you, our customers when appropriate, this is one of those times and we hope you accept our apology.


The Spitfire Software House Team.

We've Moved!

A New Home


As part of our recent up-scaling we've moved into our first offices.  We've setup shop in nearby Reddish continuing our presence in the North West.  Our new location is Broadstone Mill home to a number of exciting start-ups that we're looking forward to rubbing shoulders with.  


picture courtesy of www.stockport-bic.co.uk

Spitfire Software House's new Address


It now means that our address has changed so if you'd like to contact us by letter or post please use the address below.

Spitfire Software House,
Floor 3, Stockport Business Innovation Centre,
Broadstone Mill,
Broadstone Road,
Stockport,
Cheshire,
United Kingdom,
SK5 7DL.

One number for all your needs

Telephone Number Change


We're changing our telephone number to improve our customer services by ensuring there will always be someone there to answer your call.  You will now be greeted by a receptionist who'll redirect you dependent on your needs, whether they be system related or sales and marketing.  


Why we're changing


We're unashamedly a start-up company which gives us many benefits over our larger competitors including being able to give you answers quickly rather than you finding you have to fight with 1st/2nd line support teams before you speak to someone who can address your issue.  That said we understand the need of delivering a professional and importantly unified front.  To that end we have one number that you can contact our support and sales & marketing people on which is 0161 4434190.  We're a company that currently only operate and sell to UK companies but if you want to pop an international calling code on our new number please don't let us stop you meaning you'll want to dial +44 161 443 4190.  


Any calls to this number will be charged at your normal calling rates for 01 and 02 numbers. 


We look forward to your call.

Independent CRM Release Notes 1.0.8.7

Release Notes 1.0.8.7


We're pleased to announce the improvements made to the global search functionality in version 1.0.8.7.  We've addresses the issue created by the searching's open ended nature which meant on occasion the number of matching items sometimes meant the results returned lost all meaning.  Let's go through a scenario to explain the situation we've focused on.  Assume you're looking for a company called 'Bury-ed Alive', you would obviously start by typing 'Bur'.  In doing so the system would go off and do it's magic and start bringing back anything that met this criteria, this could include:

  • 123 Burnley Road - an address.
  • Burnt Leads - a search.
  • Bernadette Matthews - a contact.
  • Bury-ed Alive - a company.
Imagine if you had a large number of records there would be a risk of not being able to see the wood for the trees.  Therefore we've assumed that when you do go to search for your record you know what type of record it is and therefore you can prefix your search with the entity prefix and it will just return the records you're interested in.


Global Search PrefixEntities that will be Searched
cmCompanies
cnContacts
adAddresses
srSearches
tlTarget Lists
screenshot of global search querying companies that contain 'bu'



Aside from these changes we've also made it possible for you to copy and paste values into the search box.  Previously you could copy and paste text into the box but the popup wouldn't appear until you deleted a character then re-entered the deleted character.  

Bug Fixes


The release also includes a couple of bug fixes to the Global Searching.  The main issue addressed related to the pop-up box hiding and moving when the the results were displayed and then you, the user decided the refine your search.