@@ -160,17 +160,27 @@ private void ExecuteCA()
160160 var request = new OrganizationRequest ( txtMessageName . Text ) ;
161161 foreach ( var input in gridInputParams . DataSource as IEnumerable < Entity > )
162162 {
163- if ( input . TryGetAttributeValue ( "name" , out string name ) )
163+ var name = string . Empty ;
164+ if ( input . TryGetAttributeValue ( Customapirequestparameter . UniqueName , out string capiname ) )
164165 {
165- if ( input . TryGetAttributeValue ( "rawvalue" , out object value ) )
166- {
167- request [ name ] = value ;
168- }
169- else if ( input . TryGetAttributeValue ( "isoptional" , out bool optional ) && ! optional )
170- {
171- MessageBox . Show ( $ "Missing value for required parameter: { name } ", "Execute Custom Action" , MessageBoxButtons . OK , MessageBoxIcon . Warning ) ;
172- return ;
173- }
166+ name = capiname ;
167+ }
168+ if ( string . IsNullOrWhiteSpace ( name ) && input . TryGetAttributeValue ( "name" , out string caname ) )
169+ {
170+ name = caname ;
171+ }
172+ if ( string . IsNullOrWhiteSpace ( name ) )
173+ {
174+ continue ;
175+ }
176+ if ( input . TryGetAttributeValue ( "rawvalue" , out object value ) )
177+ {
178+ request [ name ] = value ;
179+ }
180+ else if ( input . TryGetAttributeValue ( "isoptional" , out bool optional ) && ! optional )
181+ {
182+ MessageBox . Show ( $ "Missing value for required parameter: { name } ", "Execute Custom Action" , MessageBoxButtons . OK , MessageBoxIcon . Warning ) ;
183+ return ;
174184 }
175185 }
176186 WorkAsync ( new WorkAsyncInfo
@@ -441,16 +451,37 @@ private void GetOutputParams(Entity ca)
441451 gridOutputParams . DataSource = null ;
442452 return ;
443453 }
444- var qx = new QueryExpression ( "sdkmessageresponsefield" ) ;
445- qx . Distinct = true ;
446- qx . ColumnSet . AddColumns ( "name" , "position" , "parameterbindinginformation" , "formatter" , "publicname" ) ;
447- qx . AddOrder ( "position" , OrderType . Ascending ) ;
448- var resp = qx . AddLink ( "sdkmessageresponse" , "sdkmessageresponseid" , "sdkmessageresponseid" ) ;
449- var req = resp . AddLink ( "sdkmessagerequest" , "sdkmessagerequestid" , "sdkmessagerequestid" ) ;
450- var pair = req . AddLink ( "sdkmessagepair" , "sdkmessagepairid" , "sdkmessagepairid" ) ;
451- var msg = pair . AddLink ( "sdkmessage" , "sdkmessageid" , "sdkmessageid" ) ;
452- var wf = msg . AddLink ( "workflow" , "sdkmessageid" , "sdkmessageid" ) ;
453- wf . LinkCriteria . AddCondition ( "workflowid" , ConditionOperator . Equal , ca . Id ) ;
454+ var qx = new QueryExpression ( ) ;
455+ switch ( ca . LogicalName )
456+ {
457+ case "customapi" :
458+ qx = new QueryExpression ( Customapiresponseproperty . EntityName ) ;
459+ qx . ColumnSet . AddColumns (
460+ Customapiresponseproperty . UniqueName ,
461+ Customapiresponseproperty . PrimaryName ,
462+ Customapiresponseproperty . DisplayName ,
463+ Customapiresponseproperty . Description ,
464+ Customapiresponseproperty . Type ,
465+ Customapiresponseproperty . LogicalEntityName ) ;
466+ qx . AddOrder ( Customapiresponseproperty . PrimaryName , OrderType . Ascending ) ;
467+ qx . Criteria . AddCondition ( Customapirequestparameter . CustomapiId , ConditionOperator . Equal , ca . Id ) ;
468+ break ;
469+ case "workflow" :
470+ qx = new QueryExpression ( "sdkmessageresponsefield" ) ;
471+ qx . Distinct = true ;
472+ qx . ColumnSet . AddColumns ( "name" , "position" , "parameterbindinginformation" , "formatter" , "publicname" ) ;
473+ qx . AddOrder ( "position" , OrderType . Ascending ) ;
474+ var resp = qx . AddLink ( "sdkmessageresponse" , "sdkmessageresponseid" , "sdkmessageresponseid" ) ;
475+ var req = resp . AddLink ( "sdkmessagerequest" , "sdkmessagerequestid" , "sdkmessagerequestid" ) ;
476+ var pair = req . AddLink ( "sdkmessagepair" , "sdkmessagepairid" , "sdkmessagepairid" ) ;
477+ var msg = pair . AddLink ( "sdkmessage" , "sdkmessageid" , "sdkmessageid" ) ;
478+ var wf = msg . AddLink ( "workflow" , "sdkmessageid" , "sdkmessageid" ) ;
479+ wf . LinkCriteria . AddCondition ( "workflowid" , ConditionOperator . Equal , ca . Id ) ;
480+ break ;
481+ default :
482+ return ;
483+ }
484+
454485 WorkAsync ( new WorkAsyncInfo
455486 {
456487 Message = "Loading Output Parameters" ,
@@ -582,7 +613,9 @@ private void PopulateOutputParamValues(ParameterCollection outputparams)
582613 foreach ( var result in outputparams )
583614 {
584615 var outputs = gridOutputParams . DataSource as IEnumerable < Entity > ;
585- var output = outputs . FirstOrDefault ( o => o [ "name" ] . ToString ( ) . Equals ( result . Key ) ) ;
616+ var output =
617+ outputs . FirstOrDefault ( o => o . Contains ( Customapiresponseproperty . UniqueName ) && o [ Customapiresponseproperty . UniqueName ] . ToString ( ) . Equals ( result . Key ) ) ??
618+ outputs . FirstOrDefault ( o => o . Contains ( "name" ) && o [ "name" ] . ToString ( ) . Equals ( result . Key ) ) ;
586619 if ( output != null )
587620 {
588621 var rawvalue = result . Value ;
0 commit comments