Call waiting is programmed in serv parameter of category.
As 3 parties (A, B en C) in call waiting are involved it needs programming for all these parties.
A= phone that sends cal waiting (internal extension)
B= receiver of call waiting tone
C= party connected to B.
Most of the call waiting functionality is set in D7D8 of Serv parameter of category. D7D8 can have these values:
00= no sending and no reception of CW
01= sending of CW allowed
02= reception of CW from internal party
04= 02 + reception of CW from OPI
06= 04 + reception of CW from external line
D3D4 of serv parameter sets call waiting values for C party.
For the C party to allow call waiting to be sent from A party to B party, value 02 (for D3D4) is appropiate.
D3D4 of serv also makes settings for intrusion and bypass of diversion, so maybe those values must be added to 02.
So for everybody to be able to receive AND send call waiting, these values must be set:
Serv D3D4=02 and D7D8=07 (01+06).
If you want to allow specific extensions to use call waiting ,just use several categories with different setting for A, B and C parties.
On top of this for external parties to automatically send call waiting use Appl.System parameter 26.
ASPAC

ARNUM=26,PARVAL=1;
______________________________
"Reload and Restart Requested
System Initiated"