When using soapFilter parameters to SOAP methods, like getArtifactDetailList, use the internal value ID to find a specific value of a user defined multi-select field. This value is exposed via the getId() method of TrackerFieldValueSoapDO.
When using parameters to methods like getArtifactDetailList, the method for searching multiselect fields is slightly different than the typical usage. To find a specific value of a user defined multi-select field, use the . This value is exposed via the getId() method of TrackerFieldValueSoapDO, as seen in the following TeamForge Perl interface code sample:
#!/usr/bin/perl # use SOAP::Lite +trace => debug; use Data::Dumper; use lib "lib"; use TeamForge; $tf = new TeamForge; $tf->proxy("http://vm01.lan/"); $sk = $tf->login('user','pass'); $trackerId = 'tracker1001'; $targetField = shift; $targetValue = shift; print "searching for value $targetValue in $targetField\n"; $targetValueId = ''; $fields = $tf->TrackerApp->getFields($sk, $trackerId); foreach $x (@$fields){ if ( $x -> {'name'} eq $targetField) { foreach $fv ( @{ $x -> {'fieldValues'} } ) { if ( $fv -> {'value'} eq $targetValue) { $targetValueId = $fv -> {'id'}; } } } } die "cant find target value" if ( $targetValueId eq ""); $tracker= $tf->TrackerApp->getArtifactDetailList( $sk, $trackerId, [], SOAP::Data->new(name => 'filters', type => 'impl:ArrayOf_tns1_SoapFilter', value => [ SOAP::Data->new(type => 'tns1:SoapFilter', value => { 'name' => $targetField, 'value' => $targetValueId } ) ]), [], 0, 0, 0, 0); print Dumper($tracker); exit 0;