Video Screencast Help

Task Server Assignment Question

Created: 25 Mar 2011 | 7 comments

Trying hard to understand the rules on how clients are assigned a Task Server. I've attached a screenshot showing my Sites/Subnets configuration and need to understand why the client was assigned to a package server in another Site?

I'm using 7.1 and have several local subnets assigned to the DELGNA 'site'. In that site, I have 2 task servers (1 is the NS and the other a Task and Package Server). 

In another site (DELHELP), I have a single subnet and 1 task/package server.

My client which is part of one of the subnets assigned to the DELGNA site is getting assigned to the package server in the DELHELP site. Shouldn't it assign to the task server that's part of the same site? 

Hopefully the picture will provide a better explanation.


Comments 7 CommentsJump to latest comment

fabio.sanches's picture

Hi GaurhothW,

Please could you verify when was the last time it  "Update Task Service Assignments" ran?


GaurhothW's picture

It is running at 02:10 am every night. All show status Completed (no errors listed).

jacezdro's picture

Hi !

According to my experience with NS 7 the Task Server assignments never ever worked according to  Subnet Rules. Rather it uses less used TS.

Actually being assigned to Task Server from different site is not issue because Software Package is anyway downloaded from Package Server belongs to specific PC subnet.

For eg:


PC IP /24

Packag/Task server ip /24

Subnet defined for Site

Mentioned PC always will get software package from its Package Server despite it is register to eg. Task Server like

GaurhothW's picture

I would agree with your observations that the 'less used TS' is selected. In my 7.0 environment, I had the same issue, but was able to avoid worrying too much about it since the initial deployment was well connected sites.

However, in my current roadmap, I'll be connecting sites with 256k and LESS bandwdith. I can't have a few dozen agents connect to it no matter how small the bandwidth impact.

I would think the intended 'design' is to load balance task agent assignments INSIDE the site, but not outside. Load balancing across WAN connected sites is a BUG in my opinion.

I'd like to understand if I'm doing something incorrect in my configuration if anyone has additional guidance.


Ludovic Ferre's picture

Hello again Gaurhoth,

I was researching the HOWTO36013 KB (this is the SP5 pointfix rollup) and found something that matches the behaviour you documented (so this should be resolve with this pointfix roll-up):

Client Task assignments do not behave as expected. Currently there is no way of specifying that the lists of task servers being passed down to the Client task agent are only to attempt to contact with task servers in their own subnet. The only option that exists is for “Task servers with fewest connections” etc. This needs to be expanded to allow for “Task servers only on same subnet”.

Ludovic FERRÉ
Principal Remote Product Specialist

Ludovic Ferre's picture

Hello GaurhothW,

I'm starting to look into this as I am also in need to get documentation on the decision process.

It won't answer your question but I am beginning the research from the web-interfaces used by the Client Task Agent:

  • /Altiris/TaskManagement/CTAgent/GetClientTaskServers.aspx

This interfaces is redirected to an assembly via the web.config under the "TaskManagement\CTAgentWeb" (so the aspx file doesn't physically exist).

The class on the assembly is (as you could guess) named GetClientTaskServers and contains methods to return a list of servers following this execution path (simplified):

  • update performance counters
  • get the caller resource guid from the http request
  • get the caller ip address from http request (could thus be a proxy or content engine) [See Update 2]
  • get Task server for guid and ip (1)
  • if no task server returned: run GetAnyTaskServer(2)
  • write for each TS the name, resource and guid entry in xml
  • send the response to the caller

The call in (1) are pretty deep and refer to generic functions, including string caches and site service caches, so it's hardly to exactly find what happens there.

But at least we know what happens when no task servers are found (2): the following SQL query is executed.

SELECT CASE WHEN tcp.[Primary DNS Suffix] IS NOT NULL AND tcp.[Primary DNS Suffix] != '' THEN [Host Name] + '.' + tcp.[Primary DNS Suffix]
		WHEN [Host Name] IS NOT NULL THEN [Host Name]
		WHEN [Host Name] IS NULL THEN vci.Name END, 
FROM [dbo].[vTaskServiceResource] vts 
JOIN [dbo].vRM_Computer_Item vci on vts.ResourceGuid = vci.Guid
LEFT JOIN Inv_AeX_AC_TCPIP tcp ON tcp._ResourceGuid = vci.Guid AND
	tcp.[_id] =	(SELECT TOP 1 t.[_id]
					FROM [Inv_AeX_AC_TCPIP] t
					WHERE vts.[ResourceGuid]=t.[_ResourceGuid] AND t.[IP Address] NOT IN ('', '', '') AND NOT t.[IP Address] IS NULL
					ORDER BY t.Routable DESC)

If the query returns nothing the hostname for the NS is sent back to the client.

I'll try to go deeper into this later on today or during the week, as I haven't been able to walk down the success path on this brief introduction to the process.

Update 1! The profiler doesn't return anything of interest for this as no profiling hooks are present in TaskManagement...

Update 2! This is corrected in Pointfix rollup version 18 (HOWTO36013) so the NS now uses a list of ip for the computer from the DB.

Ludovic FERRÉ
Principal Remote Product Specialist

Ludovic Ferre's picture

Here's the format of the request (http get):

uri-stem: /Altiris/TaskManagement/CTAgent/GetClientTaskServers.aspx

uri-query: resourceGuid=<guid>

Thus the following request allowed me to get the TaskServer list for one of my client:


The list (on my super small test lab) was short and to the point:

<response result="success">
        <server name="VBOX-ATRS2" resource="00000000-0000-0000-0000-000000000000" guid="00000000-0000-0000-0000-000000000000" />

Thus you should be able to check from a given computer the task server it will get. This combined with the Altiris profiler could help find the detailed process that goes on in the background.

Ludovic FERRÉ
Principal Remote Product Specialist