Discussion:
How is the QMId Generated
(too old to reply)
Phydeux
2009-09-23 11:44:01 UTC
Permalink
Hello:

Sorry this is a long post, anyone using Citrix Provisioning Server to
provision a machine that uses MSMQ will run into this problem.

I have a situation where I am essentially cloning server that need to use
MSMQ (workgroup mode) and I am having problems managing the QMId for each of
my servers.

Specifically, I am using Citrix Provisioning Server to deploy a number to
Terminal Servers with an application that uses an outbound MQ. The
application requires that the QMId's for each each be the same unique value
each time.

So in this condition, as John Breakwell documented so well in his blog, a
server cloned with MSMQ installed will propagate the same QMId. We found
that to be true of course and took the action to workaround it (we're in
workgroup mode so that was easy); SysPrep =1 and clear the QMId.

So we do that prior to streaming out this clone image to the targets, but
then we discovered an unintended side-effect: once each target machine
starts MSMQ, they all get unique QMId's, each time a server reboots they will
get a new one. Of course Murphy's Law being what it is, the application we
use needs the QMId's to be the same unique value for each computer.

So what I need to do is this:
*Make my master clone image so that the QMId is cleared and the MSMQ Service
is set to manual.
*When this clone image is streamed out to all of my target machines, I run a
script at start-up that implants the QMId and then starts MSMQ.

!!-I need to come up with a QMId value that I can import without having to
go to each machine, catch what is auto-generated, and then write a custom
script. for each server.-!!

So looking at the value, I noticed that it consists of 16 bytes which also
happens to be true for the UUID.

So could I use the UUID instead of this randomly generated value? Its a
value that is unique to each target, its the same size, its always going to
be the value of that target unless I change the motherboard... Can I do this?

Thanks in advance.
John Breakwell
2009-09-24 11:47:33 UTC
Permalink
Hi

MSMQ clients use CoCreateGUID (or similar, depending on version of MSMQ) to
create a unique GUID.
So, apart from being unique, there's nothing special about the value
generated - none of the bits are OS- or machine-specific, for example.

Cheers
John Breakwell (MSFT)

PS - glad you like the blog.
Post by Phydeux
Sorry this is a long post, anyone using Citrix Provisioning Server to
provision a machine that uses MSMQ will run into this problem.
I have a situation where I am essentially cloning server that need to use
MSMQ (workgroup mode) and I am having problems managing the QMId for each of
my servers.
Specifically, I am using Citrix Provisioning Server to deploy a number to
Terminal Servers with an application that uses an outbound MQ. The
application requires that the QMId's for each each be the same unique value
each time.
So in this condition, as John Breakwell documented so well in his blog, a
server cloned with MSMQ installed will propagate the same QMId. We found
that to be true of course and took the action to workaround it (we're in
workgroup mode so that was easy); SysPrep =1 and clear the QMId.
So we do that prior to streaming out this clone image to the targets, but
then we discovered an unintended side-effect: once each target machine
starts MSMQ, they all get unique QMId's, each time a server reboots they will
get a new one. Of course Murphy's Law being what it is, the application we
use needs the QMId's to be the same unique value for each computer.
*Make my master clone image so that the QMId is cleared and the MSMQ Service
is set to manual.
*When this clone image is streamed out to all of my target machines, I run a
script at start-up that implants the QMId and then starts MSMQ.
!!-I need to come up with a QMId value that I can import without having to
go to each machine, catch what is auto-generated, and then write a custom
script. for each server.-!!
So looking at the value, I noticed that it consists of 16 bytes which also
happens to be true for the UUID.
So could I use the UUID instead of this randomly generated value? Its a
value that is unique to each target, its the same size, its always going to
be the value of that target unless I change the motherboard... Can I do this?
Thanks in advance.
Phydeux
2009-09-28 13:30:01 UTC
Permalink
Thank you.
Post by John Breakwell
Hi
MSMQ clients use CoCreateGUID (or similar, depending on version of MSMQ) to
create a unique GUID.
So, apart from being unique, there's nothing special about the value
generated - none of the bits are OS- or machine-specific, for example.
Cheers
John Breakwell (MSFT)
PS - glad you like the blog.
Post by Phydeux
Sorry this is a long post, anyone using Citrix Provisioning Server to
provision a machine that uses MSMQ will run into this problem.
I have a situation where I am essentially cloning server that need to use
MSMQ (workgroup mode) and I am having problems managing the QMId for each of
my servers.
Specifically, I am using Citrix Provisioning Server to deploy a number to
Terminal Servers with an application that uses an outbound MQ. The
application requires that the QMId's for each each be the same unique value
each time.
So in this condition, as John Breakwell documented so well in his blog, a
server cloned with MSMQ installed will propagate the same QMId. We found
that to be true of course and took the action to workaround it (we're in
workgroup mode so that was easy); SysPrep =1 and clear the QMId.
So we do that prior to streaming out this clone image to the targets, but
then we discovered an unintended side-effect: once each target machine
starts MSMQ, they all get unique QMId's, each time a server reboots they will
get a new one. Of course Murphy's Law being what it is, the application we
use needs the QMId's to be the same unique value for each computer.
*Make my master clone image so that the QMId is cleared and the MSMQ Service
is set to manual.
*When this clone image is streamed out to all of my target machines, I run a
script at start-up that implants the QMId and then starts MSMQ.
!!-I need to come up with a QMId value that I can import without having to
go to each machine, catch what is auto-generated, and then write a custom
script. for each server.-!!
So looking at the value, I noticed that it consists of 16 bytes which also
happens to be true for the UUID.
So could I use the UUID instead of this randomly generated value? Its a
value that is unique to each target, its the same size, its always going to
be the value of that target unless I change the motherboard... Can I do this?
Thanks in advance.
Loading...