Custom Variables problem

119 views
Skip to first unread message

A. S.

unread,
May 21, 2013, 10:53:55 AM5/21/13
to xnat_di...@googlegroups.com
Hi,

we are trying to set up some custom variables for the subjects (phenotypic data, about 350 additional attributes).
everything works fine so far, the generated XML file can be uploaded and spreadsheet (csv) upload works too.

there is only one problem: after the upload of the spreadsheet the listing of the subjects fails:

"Failed to create search results."

The log-files:

==> /var/lib/tomcat6/webapps/xnat/logs/xdat.log <==
2013-05-21 16:43:52,564 [http-8080-29] ERROR org.nrg.xdat.om.base.auto.AutoXnatAbstractresource -
org.postgresql.util.PSQLException: ERROR: column "notifications" does not exist
  Position: 241
  at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
  at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
  at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
  at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
  at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
  at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
  at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:205)
  at org.nrg.xft.db.PoolDBUtils.executeQuery(PoolDBUtils.java:890)
  at org.nrg.xft.db.PoolDBUtils.executeSelectQuery(PoolDBUtils.java:414)
  at org.nrg.xft.search.TableSearch.Execute(TableSearch.java:103)
  at org.nrg.xft.search.ItemSearch.getIdentifierResults(ItemSearch.java:323)
  at org.nrg.xft.search.ItemSearch.exec(ItemSearch.java:435)
  at org.nrg.xft.search.ItemSearch.exec(ItemSearch.java:121)
  at org.nrg.xft.search.ItemSearch.GetItems(ItemSearch.java:775)
  at org.nrg.xdat.om.base.auto.AutoXnatAbstractresource.getXnatAbstractresourcesByXnatAbstractresourceId(AutoXnatAbstractresource.java:288)
  at org.nrg.xnat.restlet.resources.files.FileList.<init>(FileList.java:99)
  at sun.reflect.GeneratedConstructorAccessor118.newInstance(Unknown Source)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
  at org.restlet.Finder.createTarget(Finder.java:181)
  at org.restlet.Finder.createTarget(Finder.java:226)
  at org.restlet.Finder.findTarget(Finder.java:240)
  at org.restlet.Finder.handle(Finder.java:329)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Router.handle(Router.java:504)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Router.handle(Router.java:504)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:130)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124)
  at com.noelios.restlet.application.ApplicationHelper.handle(ApplicationHelper.java:112)
  at org.restlet.Application.handle(Application.java:341)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Router.handle(Router.java:504)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Router.handle(Router.java:504)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:130)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124)
  at org.restlet.Component.handle(Component.java:673)
  at org.restlet.Server.handle(Server.java:331)
  at com.noelios.restlet.ServerHelper.handle(ServerHelper.java:68)
  at com.noelios.restlet.http.HttpServerHelper.handle(HttpServerHelper.java:147)
  at com.noelios.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:881)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:206)
  at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:179)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.nrg.xnat.restlet.util.UpdateExpirationCookie.doFilter(UpdateExpirationCookie.java:34)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369)
  at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
  at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.nrg.xnat.security.XnatArcSpecFilter.doFilter(XnatArcSpecFilter.java:31)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.nrg.xnat.security.XnatBasicAuthenticationFilter.doFilter(XnatBasicAuthenticationFilter.java:118)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:109)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.nrg.xnat.security.XnatExpiredPasswordFilter.doFilter(XnatExpiredPasswordFilter.java:68)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:109)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:168)
  at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
  at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  at java.lang.Thread.run(Thread.java:722)


followed by the listing of the attributes:

==> /var/lib/tomcat6/logs/catalina.out <==
LOADED xnat:subjectData/fields/field[name=ID]/field
LOADED xnat:subjectData/fields/field[name=Group]/field
LOADED xnat:subjectData/fields/field[name=Gender]/field
LOADED xnat:subjectData/fields/field[name=Hand]/field
LOADED xnat:subjectData/fields/field[name=Height]/field
.....
etc.

and a very big SQL-command in ==> /var/lib/tomcat6/webapps/xnat/logs/sql.log <==


after that follows an PSQLException:

==> /var/lib/tomcat6/webapps/xnat/logs/restlet.log <==
2013-05-21 16:43:54,712 [http-8080-36] ERROR org.nrg.xnat.restlet.resources.search.SearchResource - Failed POST
org.postgresql.util.PSQLException: ERROR: syntax error at or near "AS"
  Position: 1573
  at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
  at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
  at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
  at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
  at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
  at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:366)
  at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:261)
  at org.nrg.xft.db.PoolDBUtils.execute(PoolDBUtils.java:914)
  at org.nrg.xft.db.PoolDBUtils.executeNonSelectQuery(PoolDBUtils.java:325)
  at org.nrg.xft.db.PoolDBUtils.ExecuteNonSelectQuery(PoolDBUtils.java:352)
  at org.nrg.xft.db.MaterializedView.save(MaterializedView.java:411)
  at org.nrg.xnat.restlet.resources.search.SearchResource.handlePost(SearchResource.java:244)
  at org.restlet.Finder.handle(Finder.java:357)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Router.handle(Router.java:504)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Router.handle(Router.java:504)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:130)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124)
  at com.noelios.restlet.application.ApplicationHelper.handle(ApplicationHelper.java:112)
  at org.restlet.Application.handle(Application.java:341)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Router.handle(Router.java:504)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Router.handle(Router.java:504)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:130)
  at org.restlet.Filter.handle(Filter.java:195)
  at org.restlet.Filter.doHandle(Filter.java:150)
  at org.restlet.Filter.handle(Filter.java:195)
  at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124)
  at org.restlet.Component.handle(Component.java:673)
  at org.restlet.Server.handle(Server.java:331)
  at com.noelios.restlet.ServerHelper.handle(ServerHelper.java:68)
  at com.noelios.restlet.http.HttpServerHelper.handle(HttpServerHelper.java:147)
  at com.noelios.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:881)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:206)
  at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:179)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.nrg.xnat.restlet.util.UpdateExpirationCookie.doFilter(UpdateExpirationCookie.java:34)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369)
  at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
  at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.nrg.xnat.security.XnatArcSpecFilter.doFilter(XnatArcSpecFilter.java:31)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.nrg.xnat.security.XnatBasicAuthenticationFilter.doFilter(XnatBasicAuthenticationFilter.java:118)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:109)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.nrg.xnat.security.XnatExpiredPasswordFilter.doFilter(XnatExpiredPasswordFilter.java:68)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:109)
  at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381)
  at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:168)
  at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
  at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
  at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  at java.lang.Thread.run(Thread.java:722)




It is almost impossible to localize the error in a SQL-string with approx. 180,000 characters.
Could the length of the SQL-query be the problem? or the number of the custom variables? maybe a known issue?

greets,

AS

A. S.

unread,
May 21, 2013, 11:06:13 AM5/21/13
to xnat_di...@googlegroups.com
sorry,
I found the problem directly after posting the issue:

the variable "MR count" is not escaped in the SQL-statement (blank between MR and count):

[...] XNAT_SUBJECTDATA_FIELD_MAP_mr count AS XNAT_SUBJECTDATA_FIELD_MAP_mr count,[...]

that is the reason why the whole statement fails..

greets,

AS

Tim Olsen

unread,
May 21, 2013, 11:31:45 AM5/21/13
to xnat_di...@googlegroups.com

One additional note, the first error you found:

 

org.postgresql.util.PSQLException: ERROR: column "notifications" does not exist

 

Has been resolved on the tip of XNAT 1.6 dev, and will be fixed in 1.6.2.

 

Tim

--
You received this message because you are subscribed to the Google Groups "xnat_discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to xnat_discussi...@googlegroups.com.
To post to this group, send email to xnat_di...@googlegroups.com.
Visit this group at http://groups.google.com/group/xnat_discussion?hl=en-US.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

A. S.

unread,
May 21, 2013, 11:58:36 AM5/21/13
to xnat_di...@googlegroups.com
thanks,

just pulled from the dev, it is working now.

I also noticed that even if I can see the value of the variables in Subject Details, they all are empty on the subject listing page.

any suggestions?

AS

Tim Olsen

unread,
May 21, 2013, 12:18:45 PM5/21/13
to xnat_di...@googlegroups.com

One thing that is easy to miss with the custom variables is that I think it automatically lower-cases all of the custom variable names.  I’m going off of old memories here, but I think that is what it did.  So, you may want to play with changing the capitalization of your variable names to be all lower case, and see if that works as expected.

Reply all
Reply to author
Forward
0 new messages