Kengolding’s Blog

Blogging about Junxure and CRM

Archive for the ‘CRM’ Category

Write a Junxure Custom Application in Visual Studio

Posted by kengolding on December 21, 2010

Creating a custom  Junxure Application with VB.net

Problem.

Download the Code for this project


This office manages accounts for advisors who do not work directly for them.  The people who own the accounts are not clients of this firm, but rather are cleints of the external Adivsory firm.  They need to be able to see the following information:

How much each individual Investor has in each account
How much each external advisor has under management with the main firm.
How much revenue was generated via these accounts.

For our example we will use the following people.
Steve Findlay – An external Advisor that the firm works with.
Alan Anderson – A client of the External Firm


Solution

The solution to this issue was a 2 part item.
First we needed to figure out a way to use Junxure to track this information.  To do this we did the following.

Added a user to Junxure with the same lastname and first name as the external advisor.
Created an Employee Position to indicate that a contact record in Junxure has an External Advisor.  The Employee Postion is called “External Advisor”
Go the the clients of the External Firm and add an employee position to them and mark their External Advisor as “Steve Findlay”.

2

Writing the custom Application.

In this article it is not my aim to show you how to use visual studio to write a custom application, I am assuming that if you are reading this, then you have some level of experience in using visual studio, or another programming language.  I am just trying to show you the possibilities of what you can do using Visual studio to enhance Junxure.  I am however including the source code for this project, so you can explore the solution further.

What we now need to do, is to find all of the Contacts in Junxure, that have an External Advisor, and present a grid that shows their accounts and the revenue for each one.
We will use two views that already existing in Junxure, vqryAccountTotals and vqryRevenueFeesPaid, since these views totals up the details of the accounts and clients revenue.
Here is a graphical representation of what we are trying to do.

We can choose whatever fields we want from the above tables, so to
create the sql for this, we will use the following fields.  We
will exclude the Junxure Manually added accounts since they would not
have revenue

and we would not want them in the results.


SELECT   dbo.tblClientEmpJobPositions.ClientID,
dbo.tblEmployees.FName,
dbo.tblEmployees.LName,
dbo.tblClients.LastName,
dbo.tblClients.FirstName,
dbo.vqryAccountTotals.AccTotal,
dbo.ContactsAccountsXref.Account#,
dbo.vqryRevenueFeesPaid.Inception,
dbo.vqryRevenueFeesPaid.YTD,
dbo.vqryRevenueFeesPaid.Last12,
dbo.vqryRevenueFeesPaid.Last3
FROM         dbo.tblEmployees RIGHT OUTER JOIN
dbo.vqryRevenueFeesPaid RIGHT OUTER JOIN
dbo.tblClients ON dbo.vqryRevenueFeesPaid.ClientID = dbo.tblClients.ID RIGHT OUTER JOIN
dbo.tblClientEmpJobPositions LEFT OUTER JOIN
dbo.tblLookJobPositions ON dbo.tblClientEmpJobPositions.JobPositionID = dbo.tblLookJobPositions.ID ON
dbo.tblClients.ID = dbo.tblClientEmpJobPositions.ClientID ON dbo.tblEmployees.EmpID = dbo.tblClientEmpJobPositions.EmpID LEFT OUTER JOIN
dbo.vqryAccountTotals RIGHT OUTER JOIN
dbo.ContactsAccountsXref ON dbo.vqryAccountTotals.CLTNO = dbo.ContactsAccountsXref.Account# ON dbo.tblClients.ID = dbo.ContactsAccountsXref.ContactID
WHERE     (dbo.tblLookJobPositions.JobPosition = N’External Advisor’) AND (NOT (dbo.ContactsAccountsXref.Account# LIKE N’Junxure%’))

This will return all of the records in Junxure that have an Employee

position of External Advisor, along with the totals in the accounts and
the revenue paid from those clients.

Now we need to make sure that when we are looking at the Junxure
Contact Record for the External Advisor of Steve Findlay, we are only
seeing the contacts that he is the External Advisor for.

Since our custom program will be launching in the context of the
current client in Junxure, we will not be able to open the custom query
showing the records for the Employee Steve Findlay.

In order to do that, we will need to convert his Junxure Client ID that
is show on the top of the client form, into the Junxure Employee ID for
the records that you added for Steve Findlay.

When we setup the Steve Findlay record we were careful to enter the
lastname and firstname the same in the Employee form as it was in the
Client form.  So we will have to do a lookup to find the Employee
id, like is shown in this diagram.

We will pass the ClientID into the new program and lookup in the
employees table for the same lastname, firstname, returning the
employee ID.  We will then filter the above sql statement to only
show the people where Steve Findlay is and External Advisor.

Junxure has the ability to launch custom programs and pass in context
sensitive information as a command line argument.  We will setup a
custom launch command to launch our CustomAdvisorReport.exe and pass in
the argument of <ID> for the current client.

This will launch our CustomAdvisorReport.exe program and it will also
pass in the ID as an argument.

It will be up to our program to read the argument and do everything
else.

So on the form load we read the arguments, and since there should only
be one, we will assign that argument to the ClientID variable.

We will use the Environment.GetCommandLineArgs to get this
value.   The GetCommandLineArgs always includes the program
name as the first element, so we will check if there are 2 arguments
and if so, we will stuff the second argument into the client ID


Dim arr() As String
arr = Environment.GetCommandLineArgs
If arr.Length <> 2 Then
MsgBox(“You need to supply a ClientID to report on”)
End If
clientID = arr(1)

Once we have the client ID, we will need to get the firstname and
lastname so we can do a lookup in the clients table.

We will use a bit of SQL to get the Employee ID.

SELECT     dbo.tblEmployees.EmpID
FROM
dbo.tblEmployees INNER JOIN
dbo.tblClients ON dbo.tblEmployees.FName = dbo.tblClients.FirstName AND dbo.tblEmployees.LName = dbo.tblClients.LastName
WHERE     (dbo.tblClients.ID = 2620)

This will return the EmpID for the user in Junxure that we
entered to match this employee.  We will now apply that Employee
crtieria to only show the accounts that match that Employee.

You can download the sample code for this application here.
Download the Code for this project

There are a few things that you will need to be aware of when using
this sample code.

We have a class that is called SqlServer.vb and it uses the connection
string that is defined in the external.config.  If you are going
to use this application as a framework for additional custom
programming, you will need to copy your external.config from
c:\junxure\codedn into the debug folder so it will know how to connect
to your database.  Or you can just edit the one that comes with
this zip file.  The line you want to change is the line that looks
like this.

<add
name=”Junxure” connectionString=”Data Source=
i7\SQLExpress;Initial Catalog=Junxure;Integrated Security=True” providerName=”System.Data.SqlClient” />

You will have to change the Highligted portion to reflect your server
and instance name as it is on your network.

Once we get the data to display we are just loading it into a grid.

Additional Implementation.

We added another button to display all of the externally managed
clients, instead of the one that you were on in Junxure.  It is
basically the same code, but we skip the filtering by client ID.

Once we get the data to display we are just loading it into a grid.

We added some code to open the client when you double click the row.

We added a button to open the Advisor when you click that button.


Posted in CRM, Custom database, Development, Tutorial | Leave a Comment »

Adding a Button to the Custom Database

Posted by kengolding on September 26, 2009

 

Hooking up the custom database to the Junxure Client Form

In Junxure, you have the ability to hook up a custom Access database to the
client form.  Once it is hooked up, you will have a new button on the top
left of the client form.


Clicking this button will open the custom database to the form that you have
specified in the options settings.  The beauty of this, is that you can
then build the form in your custom database to open for the client that you are
on in Junxure, allowing you to extend Junxure in a way that is seamless to the
users.

I will give you step by step instructions for completing this whole process. 
So let’s get started.

Setup the Options.

You will need to turn on the option to display this button, and then you will
need to specify a form to open in the custom access database.  In this
example, I am going to use the frmClients as the form that I want to open, but
that form actually does not exist in the access database.  We are going to
create it later.  For now, just turn on the option by going to Maintain
System, System Options, Global Options , custom and checking the box and adding
“frmClients” to the form name.


No that you have turned on this option, Junxure will open the custom database
and then open the frmClients.  Since you probably don’t have a frmClients,
you will probably get an error if you were to try this right now.  You will
first need to configure your custom database.

Custom Database Location

The custom database is located in

 

 

c:\junxure\code and it is called customJunxure.mdb.  If you have a
newer version of Junxure, you may not have either that folder or that file. 
If it is there, you can open it now.  If you don’t have it I have provided
the file that I am building in this example, so you can download it and it will
already have the form that I am showing you how to build.  You can download
a copy of one here.  This is a self extracting zip file that will extract
to the proper folder.
CustomJunxure.exe

 

 Once you have the c:\junxure\code\customjunxure.mdb file on your system, double-click on it to
open it and you will see this screen.
 

 

 


This is the custom database screen that I have created, but you are not forced
to use this database.  You can actually use any access.mdb file in place of
this file as long as it is named customjunxure.mdb.

In this blog entry, I am going to assume that you are using this file. 
Before you will be able to “read” any of the Junxure data, you will need to be
sure you have configured and ODBC Connection to your Junxure database. 
Here is a link that has directions for setting up and ODBC connection. 

http://www.junxure.com/kb/ViewArticle.aspx?ArticleID=151

Now lets get started setting up the frmClients in the custom database. 
The first thing you will notice in this custom database, is that you are
basically “Locked” out of the design of the menu and you probably cannot figure
out how to get to the “database Container” in the database.  We hide it
when this opens, and to see the database container, you will click “F11″. 
That will open the database container and you will see something like this, if
you are using Access 2003, and something a bit different if you are using
another version of access.  It all works the same but the interface is a
bit different.  Go ahead and hit “F11″ with the open database.


Here you will see a list on the left that allows you to select the different
object types in the database.  In this demo, we will be working with
Tables, queries, forms and Modules.  Don’t worry about the modules, there
is only one thing that we need to do and I will walk you thru it.

Refresh Table Links

The next thing that we will want to do is to refresh the table links. 
This requires that you have the link table manager installed in your access
version.  If you did not install the link table manager, you can drop and
reattach all the tables, but I would recommend that you install the link table
manager when prompted if you do not have it installed.

Click on Tools |  Database Utilities | Linked Table Manager and that
will open the linked table manager. 


If you are using Access 2007 it is on the Ribbon on the Database Tools Tab


It will look like this. 


Click Select all, then click OK.  If your ODBC connection is properly
setup, it will refresh all of the links and this database will now be able to
view the data in Junxure. 

 

 

Caution: When you are looking at “DATA” in the
custom database, you are actually looking at data in
Junxure’s SQL
database and any changes or deletions made here, will also be made in
Junxure.

 

 

 

 

 

 

 In order to assist you in really getting the most benefit out of the custom
database, we have build a “hook” into Junxure to allow you to see the what
client your are on in Junxure and what employee you are logged in as.  In
order to take advantage of this, you will need to create a module that will call
some functions that we have created.  Don’t worry if you don’t understand
this, just follow these steps.

 

1.  Click on the Modules entry in the database container.


2 Click the New button on the top


This will open a module window and it will be called Module 1.  It is in
this module that we will want to “Paste” in some code. 


3.  Copy this code below and paste it into the window, below the “Option
Compare Database” text that appears in the module windows.  The code is
between the horizontal lines, not including the lines.


 

Function getCurrentID()
   Dim o As Object
    Set o = CreateObject("JxPublicObject.clsPublicObject")
    Dim msg As String
    msg = o.GetCurrentInfo
    Dim ClientID
    Dim emp
    If msg & "" = "" Then
      'added for testing, if clientform is not open, I return 1187, you can change this for your favorite client
      getCurrentID = 1187
      Exit Function
    End If
 
 
    If InStr(msg, ",") >= 0 Then
        ClientID = Right(msg, Len(msg) - InStr(msg, ","))
        EmpID = Left(msg, InStr(msg, ",") - 1)
     Else
        ClientID = 0
     End If
     getCurrentID = ClientID
End Function
Function getCurrentEMPID()
   Dim o As Object
    Set o = CreateObject("JxPublicObject.clsPublicObject")
    
    'I am not sure why this is not regestring
    Dim msg As String
    msg = o.GetCurrentInfo
    Dim ClientID
    Dim emp
    If InStr(msg, ",") >= 0 Then
     ClientID = Right(msg, Len(msg) - InStr(msg, ","))
     EmpID = Left(msg, InStr(msg, ",") - 1)
     Else
     ClientID = 0
    End If
    getCurrentEMPID = EmpID
End Function

 

 

 


 

 

 

 

When you paste in that code it should look something like this. 


If you only see the first function, don’t worry, you may have the editor
setup to only show one function at a time.


 We are going to test it in a second so just continue along.

Testing the Functions

Open Junxure and Go to a client in Junxure.  With the client form open,
we want to get the ID of the client that you are on.

Leave Junxure open and go back to the code windows.  Look for the window
that is labeled Immediate Window. 


If you do not see it in the code window you can click on “View”
Immediate
Window

In the immediate window, type the following.  A question mark followed
by getCurrentID() and hit enter. 


You should see the current ID from Junxure below what you typed.  If
that works, you now have the ability to get the current client ID.  Now
lets test it for the current logged on employee.

Type ?GetCurrentEMPID() and hit return


You should see the employee ID.  If you get any errors, you need to
check the following.

1. Junxure is started and Running.

2. The client form is open and on a client.

3. You have installed the Junxure Public Object.  This is found in

C:\Junxure\codeDN\JxPublicObject\SetupJxPublicObject.msi
.  If you have
done number 1 and 2, then run this MSI and try again.  If it still does not
work, then you have a problem and you should call support, they can help you
with getting the public object installed.

Save The Module.


Click the save Icon and then follow the prompts to save the module, then
close the module window by clicking the X in the top right of the window.

Build a query to return the current Client’s Information

1. Return to the database container, and click on Queries.

2. Click the new button like you did for module.  This will open a query
designer dialog.


Select Design view and click OK, this will open a table selection dialog.


Select tblClients and click OK and Close.  This will take you to the
query designer with tblClients at the top of the designer.


Double click on the any fields that you think you may want to use, but for
this demo, we are going to use these fields.

ID
Lastname
Firstname

This will give you something that looks like this.

Now what we want to do, is filter this query to only
return the client that we have open in Junxure.  To do that we are going to
add criteria to the ID field.

In the cell under ID and to the right of Criteria, you
are going to type =getcurrentID() and that will call the function that we made
in previous steps.

Once you are done, it will look like this.

To test this, you can click on the menu bar “View” and
“Datasheet View’ and you should see the client that you have open in Junuxre.

Now click the save Icon and save this query as “qryClients”

close the query by clicking the X in the top right
corner.

Building the Form

From the database container, click on forms and click
new

Click Autoform:Columnar and put qryClient in the box at
the bottom, then click OK.  This will create a form that shows the fields
that you selected in your query.

The newly designed form should look like this.

You now have a form that will open to your open client
in Junxure.  We will do a few things to this form and you will be well on
your way to being able to use the custom database.

Click on View | Design View from the menu. This will put
the form in Design View.

I am going to do the following.

1. Make the form a bit bigger.

Drag the bottom right corner of the form to make it a
bit bigger.  I would make it about an inch taller and an inch wider for
now.  You can always design it to your hearts content later.

2. Resize the white text boxes to be the same size

Select the three white boxes and use the menu “Format”
size To Shortest

This will make them all the same size.

3. put a button on the form to close the application.

Find the toolbox and select a button from the toolbox. 
If you don’t see the toolbox, you can click View Toolbox from the menu and it
will toggle it on and off.  Find the button that will make a button on the
toolbox, click it and then draw a button on your form.  It does not matter
where you draw it, just put it on the form somewhere. 

that will pop up a dialog box, that will help you tell
Access what you want that button to do when it is clicked.

Select Application, Quit Application, and then click
Finish, you will then have a button on your form, that when clicked will close
the application, returning you back to Junxure.

4. Save the form as frmClients.

Click the same save button you used above to save the
form.  It will want to save it as qryClients, since that is what you based
the form off of, but you want to change that to frmClients to match what you
have in Junxure on your options page.

5. Put some code on the form to maximize it when it
opens.

Find the box in the top right of the form designer and
double click it. Select the event tab, then click in the On Open cell to reveal
the ellipsis button then click the ellipsis button to open the code builder.

Double click the code builder item in the list box.

This will open the code editor with a new OnOpen event
for the form.  Type the following in that event so it looks like this

That will cause the form to maximize when you open it. 
Now close the code editor by clicking the X at the top.

Close the toolbox and the properties windows and then 
close the form by clicking the X at the top of it. 

Be sure to SAVE everything when you are prompted.

Be sure to close the Access Custom Database and exit
Access or it will not be able to open the form when you click the button to test
it.

Testing the database from Within Junxure

Return to Junxure and open the client form to a client
of your choosing.  I choose to open the form for Ken Golding

Now click the button for that the arrow is pointing to
and it will open the custom database to the client that you have open in Junxure

Now you click the stop sign button and you will return
to Junxure.

Summary

This gives the user a seamless hook into your custom
database.  While this demo does not give you much in terms of
functionality, it does demonstrate that you can easily hook into Junxure to open
your Access database to the form that you decide, and if you write reports in
that custom database, and those reports are for the displayed client, you can
really extend Junxure allowing you to design your own reports and you need.

For more information on creating reports in Access, you
can see my previous blog posts, or just google microsoft access report designer
tutorial for a list of resources.
Click
here for Link

 

Code to find the current client in Junxure

Posted in CRM, Custom database, Development, Training, Tutorial | Leave a Comment »

Creating a custom report (Part 3) Where’s the data.

Posted by kengolding on March 30, 2009

As you probably already know, Junxure keeps all of the data inside of a Microsoft SQL server database. This database contains a number of tables, and if you know where to look and how to ask for the data, you can pull anything and everything out of the database for your own custom reports. I will try to show you the tables and the relationships for the main parts of the program. Here is what I will cover.  While I am not going to cover all of the tables below, you will see that the clients tables are prefaced with tblclients so you should be able to figure them out pretty easily

Clients – tblClients
Phones -tblClientPhones
Addresses -tblClientAddresses
Emails – tblClientEmailAdds
Classifications -tblClientClassifications
Keywords – tblClientkeywords

Actions -tblClientActions
Emails – tblClientActionsEmails
Attachments – tblClientActionsEmailAttachments
Documents – tblClientActionsDocuments

Accounts – tblClientDBCamIDs
Owners -ContactAccountXref
Assets – FAS-Assets

Hopefully this will help you find where the data is for your custom reports.

Clients

The main data for the clients is stored in tblClients.  In that table you will find all of the fields that pertain to any contact in your database.  Since Junxure is a product that has been evolving since since 1995, there are a few things that you should not about this table.  There are some fields that we no longer use, those fields were left in the table, because many of our clients have written custom reports that use that table, and if we removed the fields, many of their reports would have been broken.  We decided to leave all of the phone, email and address fields in the table, even though we no longer use them.    All of that data was moved to the appropriate tables as show in the photo below.

If you look in the center of the picture, you will see the clients table.  The Primary key and main identifier for each client is the ID fields.  Each client can have unlimited records in each of the tables that the arrows are pointing to.  The 3 tables highlighted in blue are the tables that hold the phone, email and addresses on the contact info tab in Junxure.  The tables highlighted in Yellow, are the tables that hold the data in the bottom part of the profile tab.

schemaclients

Here is a diagram that shows the relationships between employees and the clients.

schemaclient

Actions

The actions are contained in a main table, and the emails and documents are located in additional tables.  Here is a diagram that shows the relationships for the actions.

tblClientActions -In the diagram below, you can see the white box in the center is the main action table.   It contains the main part of the actions.

tblClientActionKeywords -The pink table is the action keywords table, and you can have many records in this table for each action.

tblClients -The purple table is the clients table, and it is related to the actions via the client ID field.

tblAlerts -The darker yellow table is the alerts, and if an action has a task assigned to it, then an alert is placed into this table.  Once alerts are completed, they are deleted from this table

tblClientActionsFYi -The light yellow table at the top left is where we store the FYI’s for this actions.

tblClientActionsEmails and tblClientActionsEmailAttachments -The Green table are the emails and the email attachments.  Each action can have multiple emails, and each email can have multiple attachments.

tblClientActionsDocuments -Finally the blue table is the table where we store the documents.  We do not actually store the document in the database, but we store the path to the document in the filename fields.

schemaactions

Also on actions you may be interested in seeing what employees are related to the action.  Here is the diagram for that.

schemaactionemp

Accounts and Assets

Accounts and Assets are a bit harder to comprehend and because of the way Junxure has evolved, the naming on these tables is a bit strange.  One thing to remember is that Junxure, in it’s evolution, now allows multiple clients to own an account, so the accounts table is not really associated with the clients at all, that is where we use the cross reference table.  To help you understand how it is all related, it would help if you think of these 4 entities, and then look at the names of the tables that hold these entities.

Clients  – tblClients

Accounts – tblClientDBCamIds

Owners – ContactsAccountsXREF

Assets – FAS-ASSETS

Looking at the picture below you can see that each assets belongs to an account.  Each account has owners, and each owner is a record on the clients table.

schemaassets

Asset Fields

The field names on the asset form do not match the field names in the tables.  Here is a screen shot that shows what the actual field names are for the asset form.

schemaassetfields

This should answer many questions you may have about the location of the data and the how the data is related.  In my next post, I will try to show you how you can “Hook” the custom database to the Junxure database using the Junxure Public Object.

Posted in CRM, Custom database, Development, Schema, Tutorial | Tagged: , , , , , , | 2 Comments »

Effective Task Managment and Tracking

Posted by kengolding on March 17, 2009

More than a few times, either on the phone, forum or in person,

I have heard our users cry out “We want to assign a task to multiple people ! ”

This has always been a point of contention between different leadership styles.  I have always taken the line, that it is not a good practice to assign a task to multiple people, knowing that if more than one person is assigned, the chances of it being completed are diminished.  I just have to think about when my kids were younger and I asked them to mow the lawn.  Days would pass and each one would assume that the other was going to do it, and I frequently found myself, spending a Friday evening explaining to them, that if the yard was not mown before Saturday morning, then they would be spending the weekend inside instead of playing outside with their friends.  A poor decision on assigning the task, put me in the postion of having to drop the hammer on them.  In retrospect, it would have been much better to make it clear and easily understandable, that one of them specifically was to cut the grass.

Hildebrant International is a Global Leader in Professional Services consulting, and on their website  they have ten management principles.  Principle number seven is posted below.

Here is a the link to the source http://www.hildebrandt.com/Documents.aspx?Doc_ID=892

7. Do not assign an important task to any group that is co-led.
Co-leadership has multiple possible consequences and all but one of them is bad:

a) The work will be carried out competently,
b) Each co-leader will assume that the other will take responsibility for moving the matter forward and nothing will happen,
c) Both co-leaders will move forward independently creating:

i) A wasteful duplication of effort,
ii) Confusion among subordinates as to who is in charge of the matter,
iii)Maddening multiple subordination of subordinates and coworkers, or
iv) Contradictory instructions to coworkers and subordinates.

If you are serious about an assignment being carried out, assign it to one person, or to the leader of a group, such as a practice group leader, in his or her role as leader. Making assignments to a collectivity (e.g. ad hoc committee, partners meeting, practice group) defuses responsibility. Having delegated a task to an individual, neither disappear nor interfere, but maintain a consistent, light supervisory interest on the level of, “How are things going with such and such?”

Reading that just enforces what I learned years ago and I still subscribe to it today.

But are there exceptions?

As the main architect and developer of Junxure, I have learned a lot of things in the  14 years.  One of the things that I hold dear to my heart is the notion that our users are pretty smart people, and it is because of their ideas that Junxure has become a leader in the Financial services software space.  As I listened to many of them explain why they wanted to assign a task to multiple individuals, it became clear that what they really wanted is something a bit different.   About a month ago, one of our users articulated to me, a scenario that was like a beacon of light shining on the problem.

In their office, they have small teams of people who perform the same tasks for any or all of the advisors.  The advisors have gotten used to using Junxure’s Action Templates and Action Sequences, but they were having a problem making them work smoothly.  The problem was that certain tasks needed to be assigned to a team of people, because the advisor did not really care who did it,  they just needed to be sure that it got done.  They tried assigning all the tasks to the supervisor of the team, and then the supervisor would reassign the tasks out to the people on the team as they thought necessary.  While this was an improvement, it still had it’s flaws.

As is often the case, someone on the team would not come in one day, and the tasks that were assigned to that person were semi hidden from the view of the rest of the team.  While it is true, that with the report dashboard, the could have seen what was assigned and taken it, it required a change of course from their natural work flow.  In our discussions, I finally understood what they needed to make the system even more efficient.

Queues

Wikipedia defines a queue as  “,An area where a line of people wait. The verb queue means to form a line, and to wait for services. Queue is also the name of this line. “    This is the nature of this problem.  There is a line of work that needs to be done, and any of the team members can do it.  They just need and easy way to see the pending tasks for the queue and then they can grab one and do it.  Efficient and practical.

Rolling up the sleeves and getting to work.

After thinking this thru, I began to work on a solution that will make Junxure even more practical for bigger offices where for efficiencies sake, they employ queues to assign out tasks.  The first thing I did was I added a new task area, called “View Queues”  From this area, you can easily create a new queue and then, once it is created, you can assign tasks to the queue instead of a person.  Team members can easily view the queues, right from the main menu and work on the tasks as the come in from the different areas of the company.  Often times, with larger companies, the tasks come in from an office that is not even in the same city, so knowing who the actual person who is going to perform the task is not only not necessary, but also not practical.

The managers of the teams can easily monitor the queues and make sure that people are picking up the tasks in a speedy manner.  They also still have the full ability to assign a task to an individual just like before.  It really is the best of both worlds.  In fact, if you never setup a queue, then Junxure will work exactly how it did in the past, but once you create a queue, you can assign any type of action to the queue instead of a person.

My initial feedback on the queuing system has been great and I think that it will help solve a longstanding issue for many of our users. While I am not really that old, I am getting older and just a bit wiser, proving that you can teach an old dog new tricks.

If you would like to see more information about the new queuing system you can click this link.  http://s3.amazonaws.com/Junxurebasics/ActionQueues/default.htm

Let me know how you like the new queueing system.

Posted in CRM, Management | Tagged: , , | 3 Comments »

New Feature (Multi Custom Fields for Accounts)

Posted by kengolding on March 16, 2009

Tracking Account Information

Over the last year, I have had many requests from our users,  some work in the accounts area of the program.  Basically they were asking for 2 things.

More fields that we did not have

Better ability to report on the Accounts.

Due to the enormous efforts what went into rewriting Junxure 7, we did not have time to get these items into the main release, but we were listening and they will be in the next release.

Here is what is coming.

Unlimited Custom Fields

Accounts Rule Builder

Account Report Wizard

Enhanced Client User fields

I have just added a few new features to the Accounts details form.   These features are in the latest code, and they will be released as soon as testing gets underway.  Probably within 3-4 weeks.

 

Unlimited Custom Fields on Accounts

In order to use them, you will have to first set them up.

Go to List Data Maintenance click on the Program Setup Category,  and then select Multi Custom Fields.

There you will find a form where you can setup unlimited fields that will be associated with each account.

There are 4 attributes that make up each field

Data type – This determines the User interface control that you will use when you access this field.  The following types are available

Combo – this will present a drop down for the field.

Date – this will present a date time picker for the field.

Number – this will present a numeric editor for the field.

Text – this will present a text box for the field.

Currency – this will present a currency editor for the field

Y/N – This will present a check box for the field

Field name - This will be the name of the field on the Account form

Sort – This determines the order that the fields appear.  They will appear in two columns, down then across.

Key- This is a button that you can click to enter the contents of the drop down if you select Combo as the data type.  The button will only appear when you select Combo

Here is a screen shot where you setup the fields.  Another benifit of this enhancement it that it will allow us to expand the custom fields to the insurance at a later date.

setupfields

Once the fields are setup, you can see them on any account from the clients form.

customfields

Account Rule Builder

This is a rule builder, that works for Accounts.  You can use any of the fields that are on the account form, along with any of the custom fields that you have setup.

You can create unlimited rules and check them on the fly, or from the Account Rule list.

accountrulebuilder

Account Report Wizard

This is a report wizard, similar to the Report wizard and the Action Report Wizard, but it is for Account information.  You use an Account Rule to determine what accounts you want to see.  You can then enter a client rule to limit the list to a group of clients, and then you select what fields you want to see in your report.  Just like the other, you can send the results to a portrait or landscape report, or to an Excel spreadsheet.

accountreportwiz

Enhanced Client User Fields

I have taken the ability to select the data type for a custom field,  and have applied that to the existing user fields on the client form.  By default, they will all be combo fields, but you can change them to any of the above listed data types, so no conversion is necessary.

It is important to be sure that you do not change a field that has text in it to a Number.  I have put some checks into the system so you will not be able to do this.  When using this feature, if you do not see one of the data types in the drop down, it is because you have data already entered in that field, and it would conflict with the missing data type.

 

clientsetupfields

clientuserfields

 Hopefully, these changes will go a long way to making Junxure a more capable program, assisting you to run a better practice.

Posted in CRM, Junxure | Tagged: , , , | 6 Comments »

Efficiency with Junxure

Posted by kengolding on March 10, 2009

This is the first entry into a new blog that I have started,  hoping to help the users of Junxure, get more out of the system.  Hopefully you will find it useful and be moved to share a comment or two, to help get a discussion going.  At a mininum, I hope to achieve 2 things with this blog.

1.  To make you a better user of Junxure, finding out what the features are and how to use them.

2.  To engage users in a discussion of ways to improve your practice, and your insight on how to improve the program.

In this turbulent time of markets that are seemingly moving in a continuous downward spiral it is all the more important to have an efficient and easy to use CRM System.  Many financial planners, insurance agents CPA’s and others in the financial services industry have chosen to use Junxure to improve efficiency and customer service.  I want to give you a couple of examples of how others are using the system to impove service and hang on to client’s who are searching for competency and assuredness when it appears that none can be found.

Relating a Story

Here is a scenario that will illuminate one of the reasons why you need a quality CRM.  Imagine if you will, that you are an office that works with attorneys to take care of certain estate planning items.  In this case, you are working with a client to get a will created.  The client and the advisor have a meeting and discuss the things that need to be done, and one of the items was a will.  The advisor gets the information and sends it to the attorney.  The next day the attorney calls back but the advisor is not is, so they leave word with an associate telling them that it all looks good and they would be able to have the job completed by next Thursday.  Everything is good and life went on.  Later that week, the client calls back in to check on the status of the work.  When the client calls in, they get the receptionist, and they ask her if she knew the status of the work on the will.  Unfortunately, the advisor was out of the office, and the receptionist did not know the status of the work.  This begins a series of steps that highlight the reasons that any professional organization needs to have a system in place, and every employee in the company needs to utilize that system to its fullest.  Here is what happens.

1. The receptionist tells the client that she will check on it and get back with them.

2. She then calls the advisor who was not avilable so she leaves a message.

3. The advisor gets the message and calls the attorney to find out what the status is.

4. The attorney is out, so the advisor leaves a message.

5. The attorney calls the advisor back, and tells him “Yesterday I left a message with your associate but you must have not gotten it.  The work will be done next Thursday”

6. The advisor, armed with this new information called the receptionist back and tells her to call the client and let them know that it will be done next Thursday.

7. The receptionist calls the client, but the client is not avilabe, so she leaves a message telling them that the work will be ready next Thursday.

This scenario can be expanded upon but it is something that happens on a regular basis, causing people at every level of the company to waste precious time chasing information.

In this age of Google, and instant searches, you cannot afford to run a business like that.

If you were using a CRM system like Junxure, you would have had a much different scenario.  When the attorney called and told your associate the status of the work for that client, he would have went to the client’s record, and made an entry updating the status.  Then when the client called it would have went something like this.

1. The client calls and the receptionist opens the record, sees the note and tells the client that they have spoken with the Attorney and the work will be ready on next Thursday, “Is there anything else that I can help you with?”

DONE!

NOTICE A DIFFERENCE?

The first scenario, easily could have taken over a half hour to get back to the client. 

People at every level would have wasted time, accomplishing the same task. 

What would happen if the Advisor was out of touch, maybe on a plane, it could be hours or possibly days before the client got their answer?

What do you think the client would think about your firm’s competence when they cannot get an answer to something as simple as the status of some work?

Conclusion

When everyone in a company uses the system to document what they are doing, it will improve customer service at all levels.  It is important to deliver what you promise, and when you are prospecting for a new client, you are probably telling them that you are a high service, high touch, professional firm.  Without the proper systems in place and people using them as they are designed, you will not be able to deliver what you have promised.

Posted in CRM | Leave a Comment »

 
Follow

Get every new post delivered to your Inbox.