IGPRuntimeAttachmentList missing in caf/eu/gp/api DC ?
Hi,
The IGPRuntimeAttachmentList class is missing in this particular DC. Can anyone let me know from where we can get this DC?
Thanks,
Uma.
Hi,
Do you have the DC caf/eu/gp/api? If you want to use this DC you need to use NWDI to develop a WD DC project. If you are not using NWDI then you can import that DC locally and use it. I am sending you a doc link. Please go through the doc and I think your problem will be solved.
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f7be53bb-0b01-0010-1c96-be3cb6799c1b
If you face any problem please let me know.
Thanks
Chandan
Similar Messages
-
Illegal dependency access list does not allow use of caf/eu/gp/api
I am using NWDS 2004s and working with GP implementation.
I am also able to see the development components as caf/eu/gp/api and sap.com/caf/gp/api/wd after copying the required files.
But while selecting caf/eu/gp/api i am getting following exception
Illegal dependency access list does not allow use of caf/eu/gp/api
Please suggest if you have any idea regarding this.
Regards
SatyaHi Satyabrata,
Are you using NWDI for development, or local development?
I had the same problem when using local development components. I read somewhere in the documentation that for this you have to use the NWDI.
Now I am using NWDI and this is working correctly.
Johan -
Cannot use caf/eu/gp/api/wd
Dear all,
We are facing a problem. We are trying to test the GP and are working on some examples. We are able to "see" the component "caf/eu/gp/api/wd" (and "caf/eu/gp/api"), but when selecting it, it says the following:
"Illegal dependency: The compartment of xxxx(xxxx) must explicitly use compartment of sap.com/caf/eu/gp/api/wd."
Does any of you know how to solve this problem?
Rgds,
Alan.Hi Alan,
I think the previous reply is slightly off track and confuses the message you are getting with another one, very similar, that says "Illegal dependency: Access...".
I had your same problem in a completely different context, and found out that the error is saying that you need to create an explicit <used-compartment> dependency between your custom software component (SC) and the SC where sap.com/pcui_gp/xssfpm resides.
Proceed as follows:
- locate the SC where sap.com/pcui_gp/xssfpm resides (you can do this in Developer Studio, browsing the SCs from SAP)
- access your SLD > Software catalog > Software components
- select your custom component
- in the "Dependencies" tab, select BuildTime context
- there, click the "Define Prerequisite..." and add the SAP standard SC you located before: this updates the software catalog with the dependencies... but practically, it does nothing to help you with your current SC... so... more to do!
- access your CMS > Landscape Configurator, track data tab
- select your custom SC
- click the button "View/Edit XML content"
- add <used-compartment> and <variant-mapping> nodes referring to the SAP standard DC
- click "Back"
- save the track data. The system will tell you that you have to perform a restore... please do, although it is not really necessary to proceed
- open your NW Developer Studio and connect to the NWDI server
- you should receive a message telling you that a new development configuration is available. Proceed as instructed (close all open activities, remove the configuration and import the newer one)
- at this stage, you should be able to add the Used DCs dependency (usual process: create a project etc.)
Hope this helps... appreciate if you could award points if it does
Cheers
G -
Clusterwide exception: Failed to start dependent interface ''caf/eu/gp/api'
Hello !
We are working with SAP Netweaver 2004s SP11 with a local repository. We are trying to deploy a web dynpro project
using the guided procedures api. But we have a problem at deploy time :
Finished with warnings: development component ... :Caught exception during application startup
from SAP J2EE Engine's deploy service:java.rmi.RemoteException: Error occurred
while starting application ... and wait. Reason: Clusterwide exception: server ID 1117550:
com.sap.engine.services.deploy.container.DeploymentException: Clusterwide exception:
Failed to prepare application ... for startup.
Reason=Clusterwide exception: Failed to start dependent library ''caf/eu/gp/api/wd'' of application ...
Status of dependent component: STATUS_MISSING.
We have already added the dependencies in the project, and the library references in the project properties.
Has anyone already encountered this problem ? I thank you in advance.
Best regards,
RomainHi Romain,
What Piyush has replied in his second post above, i wish to another thing to it.
His is right in saying that we need to check run time, deploy time, and build time as dependency types. But once you check them and click on finish, try again seeing the properties of that Used DC which you just added. You will see that only Deploy Time Dependency Type is "true", all the others are false. You need to edit that Used DC and then again check all three build time, deploy time, and run time. Now if you see the properties, you will see that these three are set to true. Don't know why this happens, but this does happen.
See page 13 and 14 of the following doc:
<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/50d74ada-0c01-0010-07a8-8c118d408e59">Implementing a Web Dynpro Callable Object which Implements the GP Interface</a>
See this entire doc, may be it helps.
If your problem still doesn't get solved, gve me your email address, i will send you another doc for creating a callable object from a web dynpro application.
Bye
Ankur
Do reward points for helpful answers!! -
Where do you find DC caf/eu/gp/api?
I am attempting to do the "Implementing a Callable Object for Background Execution" tutorial and I can not find the DCs "caf/eu/gp/api". I have NetWeaver Stuidio 7.0.08 installed. What other components must be installed into NetWeaver?
Hi Andre,
I am using NWDS 2004s and working with GP implementation.
I refered to ur blog and cretaed the directory structure as suggested by you.
I am also able to see the development components as <b>caf/eu/gp/api and sap.com/caf/gp/api/wd</b>.
But while selecting <b>caf/eu/gp/api</b> i am getting following exception
Please suggest if you have any idea regarding this.
Regards
Satya -
I need Your Help for CAF/EU/GP/API Guided Procedures
Hi everyone, I need your help about Guided procedures CAF API, I am developing an WEB DYNPRO Callable Object for Guided Procedures, but I need to get the task name of the running proceess on Guided Procedure once time a user initiated it, if is possible? Do you have an examples?
Thenk you very muchHi,
Yes you can retrieve the task name of the running process. Here is what you need to do.
1. Get the process instance - IGPRuntimeManager - > getInstance()
2. Get the IGPActivityInstance(s) from the process instance - processInstance.getChildrenInformation().
3. Optionaly check if these child activities are Blocks or Actions. If Block drill further to get the Actions using getChildrenInformation().
4. Retreive the IGPActionInstance(s) from the Block Activities.
5. Get the IGPActivity object for these Actions using IGPActionInstance.getTemplate() method.
6. This object will have a method getTitle() which will retrive you the activity name.
Hope this helps.
Thanks
Kiran -
Is Audit related api's are missing in OIM 11g new API's.
Hi All,
I want to use OIM 11g Apis to use perform tasks related to audit. But I didn't found any api in oim11g new APIs.
Can any one suggest me what shall i do?
Thanks,
Iceman513Hello,
Did you get any answer?
I am also trying to generate Audit using OIM API/Direct procedure calls..
Any help will be appreciated.
Thanks -
Classes are missing in the api doc's
Some of the class that my java book says are available aren't documented on th web. Am I missing something, or is the api doc behind the times?
Here is the result of pervel's manual API search service: http://java.sun.com/j2se/1.4.1/docs/api/java/awt/Graphics.html
Do you need any other searches done? -
A problem about GP Background CO call caf remote interface
Hi, Guys.
My server is CE.
When I developed my background co for my gp process, I tried to call a local interface of a ejb which is from a caf project.
After I finished it and tested it by CO Test, it worked fine.
But when I tried to test it by starting a process, I got an error meassage.
Below is error message:
javax.ejb.EJBException: ASJ.ejb.005042 (Failed in component: demo.sap.com/ca_flowear) Exception raised from invocation of private java.lang.Object com.sap.caf.rt.interceptors.LogInterceptor.aroundInvoke(javax.interceptor.InvocationContext) throws java.lang.Exception method on bean instance com.sap.demo.ca_flow.modeled.as.flow.appsrv.as_currenprocessor.AS_CurrenProcessorBeanImpl@7973ae6f for bean demo.sap.com/ca_flowearannotation|demo.sap.comca_flowejbmodule.jarannotation|com.sap.demo.ca_flow.modeled.as.flow.appsrv.as_currenprocessor.AS_CurrenProcessor in application demo.sap.com/ca_flow~ear.; nested exception is: java.lang.NullPointerException: while trying to invoke the method com.sap.engine.frame.core.thread.ThreadContext.getContextObject(int) of an object loaded from local variable 'tc"
I have no idea how to solve it.
I promise that it works fine when I test it by CO Test.
Thanks a lot.Hi, all.
My problem looks like that my background co can`t find com/sap/caf/eu/gp/co/api/IGPBackgroundCallableObject.
I have checked this class which exists in caf/eu/gp/api and I have added it to my ear project with every kind of dependency including build time, design time, deploy time, and runtime.
Did I miss anything?
I really have no idea what I can do now. -
Hello
I want to update the Calculate Tax field on the supplier site level.
I am using the ap_vendor_pub_pkg.update_vendor_site API to update the ap_supplier_sites_all.auto_tax_calc_flag field. But the API does not update the field. I want to change the value of the auto_tax_calc_flag from 'L' or 'N' to 'Y'
I am running the API as a concurrent request. Thus the org_id should be set when you use the relevant responsibility
Below is my code. Am I missing a parameter? The API does complete successfully. The ap_supplier_sites_all table does show as updated when you look at the last_update_date field. But the auto_tax_calc_flag value does not change
Any ideas why the api is not updating
create or replace procedure apps3_mtnaol.mtn_update_supp_sites(errbuf in out varchar2, retcode in out number) is
v_error_message varchar2(3000);
l_vendor_site_rec ap_vendor_pub_pkg.r_vendor_site_rec_type;
l_return_status varchar2(1000);
l_msg_count number;
l_msg_data varchar2(2000);
l_msg_dummy varchar2(3000);
l_output varchar2(3000);
l_vendor_name varchar2(3000);
l_vendor_number varchar2(3000);
l_vendor_site_code varchar2(3000);
v_vendor_site_code varchar2(3000);
v_vendor_site_id number;
v_party_site_id number;
l_remmitance_email varchar2(2000);
v_party_id number;
v_party_site_name varchar2(3000);
v_ext_payee_rec iby_disbursement_setup_pub.external_payee_rec_type;
cursor c_1
is
select segment1
,vendor_name
,vendor_id
--,vendor_site_id --vendor_site_id from org_id 22970
,vendor_site_code
,vendor_type_lookup_code
,org_id
,party_id
,party_site_id
from mtn_supplier_site_22970
where 1 = 1
and segment1 = '661699';
begin
for rec in c_1 loop
select assa.vendor_site_id -- get vendor_site_id from org_id 5001
,assa.party_site_id
into v_vendor_site_id
,v_party_site_id
from ap_supplier_sites_all assa
where 1=1
and org_id = 5001
and assa.vendor_id = rec.vendor_id
and vendor_site_code = rec.vendor_site_code;
select party_id
,party_site_name
into v_party_id
,v_party_site_name
from hz_party_sites
where 1=1
and party_site_id = v_party_site_id;
fnd_msg_pub.delete_msg(null);
fnd_msg_pub.initialize();
l_return_status := '';
l_msg_count := '';
l_msg_data := '';
l_vendor_site_rec.vendor_site_code := rec.vendor_site_code;
l_vendor_site_rec.auto_tax_calc_flag := 'Y'; --calculate_tax field that needs to be set to Yes
l_vendor_site_rec.org_id := 5001;
l_vendor_site_rec.vendor_id := rec.vendor_id;
l_vendor_site_rec.party_site_id := v_party_site_id;
l_vendor_site_rec.party_site_name := v_party_site_name;
v_ext_payee_rec.payee_party_id := v_party_id;
v_ext_payee_rec.supplier_site_id := v_vendor_site_id;
v_ext_payee_rec.payee_party_site_id := v_party_site_id;
v_ext_payee_rec.payer_org_id := 5001;
ap_vendor_pub_pkg.update_vendor_site(p_api_version => 1.0,
p_init_msg_list => fnd_api.g_true,
p_commit => fnd_api.g_true,
p_validation_level => fnd_api.g_valid_level_full,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
p_vendor_site_rec => l_vendor_site_rec,
p_vendor_site_id => v_vendor_site_id
l_output := '';
if l_return_status <> 'S' then
for i in 1..l_msg_count loop
fnd_msg_pub.get(i, fnd_api.g_false, l_msg_data, l_msg_dummy);
l_output := l_output || (to_char(i) ||': '|| substr(l_msg_data,1,250));
fnd_file.put_line(fnd_file.output, 'Unsuccessful Update:'||l_return_status||': '||l_msg_count||', '||l_output);
fnd_file.put_line(fnd_file.output, 'Vendor Number: ' ||l_vendor_number);
fnd_file.put_line(fnd_file.output, 'Vendor Name: ' ||l_vendor_name);
fnd_file.put_line(fnd_file.output, 'Vendor Site Code: ' ||l_vendor_site_code);
fnd_file.put_line(fnd_file.output, 'Calculate Tax: ' ||l_vendor_site_rec.auto_tax_calc_flag);
end loop;
else
fnd_file.put_line(fnd_file.output, 'Successful Update:' ||l_return_status||': '||l_msg_count||', '||l_output);
fnd_file.put_line(fnd_file.output, 'Vendor Number: ' ||l_vendor_number);
fnd_file.put_line(fnd_file.output, 'Vendor Name: ' ||l_vendor_name);
fnd_file.put_line(fnd_file.output, 'Vendor Site Code: ' ||l_vendor_site_code);
fnd_file.put_line(fnd_file.output, 'Calculate Tax: ' ||l_vendor_site_rec.auto_tax_calc_flag);
end if;
commit;
end loop;
exception when others then v_error_message:= 'Other error: ' || SQLERRM;
fnd_file.put_line(fnd_file.output, 'Error Message: '||v_error_message);
fnd_file.put_line(fnd_file.log,'***************************************************************************');
fnd_file.put_line(fnd_file.log, 'Other error: ' || SQLERRM);
fnd_file.put_line(fnd_file.log,'***************************************************************************');
end;
/Yes the API works outside my code.
I have used this exact same API to successfully update other fields on the ap_supplier_sites_all table like hold_unmatched_invoices_flag, match_option, pay_group_lookup_code, pay_date_basis_lookup_code, and always_take_disc_flag fields -
API pa_project_pub.UPDATE_TASK is not updating attributes
Hi All,
I am facing a strange problem in calling API pa_project_pub.UPDATE_TASK. It updates fields like task name, description etc, but it doesn;t updates attribute8, or any attribute fields. The DFF which is on this table pa_tasks, is context basis, and we are updating it for 'Shipping' context, and I am giving this value means 'Shipping' in attribute_category fields, becasue in table pa_tasks, it stores this value in attribute_category only.
Below is the code, i m using... Please let me know if I am missing any parameter, becasue this API is giving SUCCESS, so I dont know why the values are not getting updated.
pa_project_pub.UPDATE_TASK(p_api_version_number => 1.0,
p_commit => FND_API.G_TRUE,
p_init_msg_list => FND_API.G_TRUE,
p_msg_count => l_msg_count,
p_msg_data => l_msg_data,
p_return_status => l_return_status,
p_pm_product_code => 'SERVICE REQUEST',
p_pa_project_id => '18090',
p_pm_task_reference => '90000',
p_pa_task_id => p_task_id,
p_service_type_code => 'NORDIC_EMLP_PROJECT',
p_attribute_category => 'Shipping',
p_attribute8 => 'test1',
p_out_pa_task_id => p_out_pa_task_id,
p_out_pm_task_reference => p_out_pm_task_reference,
p_update_task_structure => 'Y');
Thanks and Regards,
NidhiAre you using a vision instance? Which release are you in?
If the issue is yet to be resolved after checking and compiing the invalid objects, as suggested by Hussein, then you can do the following:
- Check the responsibility ID of "Projects, Vision Operations (USA)", the one you are using. In vision instances the responsibility ID 20420 (as provided in apps_initialize) is little odd. In 11.5.10.x and R12 vision instances the responsibility ID is normally 56486. Though it can be different in your instance.
- If the responsiblity ID is correct OR you are using a different responsibility then check whether responsibility Menu is having "Open Integration Toolkit Funtions Menu" submenu (without any prompt) assigned and active (grants checkbox). Please also check within this submenu whether "Activity Management Gateway:Add Task" function is assigned and active (grants checkbox)
- For seeded Project responsibilities the submenu & underlying function is seeded, but if you using a non project responsibility for creating project/ task etc then that responsibility should have "Open Integration Toolkit Funtions Menu" submenu (without any prompt) assigned and active.
Thanks
Supro -
How i map the caf data with data of UWL in web dynpro
Hi Experts,
i created a bpm project with nwce 7.1.1 and it have a independent caf to keep it's data and status.
now i have to create a view(use web dynpro) such like UWL,
my question is
how i map the caf data with UWL, and let the view can open the task(popup a window, just like UWL do) for user to finish their job?
thanks.Hi Vic
Your requirement is exect functionality of UWL based on WEBDYNPRO, CAF and BPM for automation? ,and question is How to use CAF with WD or CAF with UWL API's ?. please clarify it.
Please fo through from given doc misght give u some idea
1. [How to develop Web Dynpro UI for your CAF project |http://www.sdn.sap.com/irj/scn/weblogs;jsessionid=(J2EE3417300)ID0722080650DB02400261803144436507End?blog=/pub/wlg/5414]
Best Regards
Satish Kumar -
This is the scenarios:
I have created a custom Linux VM image and I have successfully launch a VM using the Python API on region US-WESt.
My goal is to create a custom Linux VM on a VNET.
This is what I have done:
1. Knowing that using Python API to create Virtual Network (VNET) is not supported yet, I manually created a VNET using Console.
2. Using Python API to create hosted service (cloud service) on the same location as the VNET I created.
3. Using Python API to launch the VM on the VNET.
4. without any exception nor error, the VM is just not created...
The Python APIs I used:
#create a VM
name = 'myCloudN'
location = 'West US'
sms.create_hosted_service(service_name=name,
label=name,
location=location)
image_name = 'cloudN-Azure-20150205-os-2015-02-05'
media_link = 'https://xxxxxxxxxxxxxxxxxxxxxx.windows.net/vhds/cloudN-Azure-20150205-os-2015-02-05.vhd'
linux_config = LinuxConfigurationSet('cloudN-1', 'ubuntu', 'ubuntu1!', True)
os_hd = OSVirtualHardDisk(image_name, media_link)
vnet_name = 'test1'
sms.create_virtual_machine_deployment(
service_name=name,
deployment_name=name,
deployment_slot='production',
label=name,
role_name=name,
system_config=linux_config,
os_virtual_hard_disk=os_hd,
virtual_network_name=vnet_name,
role_size='Small')
<azure.servicemanagement.AsynchronousOperationResult object at 0x90669ec> <=====I got this
try:
props = sms.get_deployment_by_name(name, name)
print vars(props)
except Exception as pe:
print "Error on get_deployment: %s" %str(pe)
Error on get_deployment: Not found (Not Found) <======== Cannot find my VM
Did I miss anything or the Python API is not ready for this yet....
Please help.
Big thanks in advance...I did create the cloud service. In my original post, the first thing I do is to create the cloud service.
The API I used to create cloud service was "create_hosted_service".
#create a VM
name = 'myCloudN'
location = 'West US'
sms.create_hosted_service(service_name=name,
label=name,
location=location)
Please help. -
Using GP Runtime Manager in CAF
Hi,
I would like to create a CAF operation to access our Guided Procedures processes via the GP Runtime Manager.
In my CAF project I have added the dependencies to both caf/eu/gp/api and caf/eu/gp/api/wd and checked all the 3 'Design Time', 'Deploy Time' and 'Runtime' properties.
In the code, I have used the following line to get the GP Runtime Manager without any build and deployment errors.
"IGPRuntimeManager rtm= GPProcessFactory.getRuntimeManager();"
However, when I run the code in my service browser, I got the NoClassDefFoundError exception.
Part of the exception stack trace is:
" javax.ejb.EJBException: nested exception is: java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/sap/caf/eu/gp/process/api/GPProcessFactory
java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/sap/caf/eu/gp/process/api/GPProcessFactory
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:100)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext$InvocationContextImpl.proceed(AbstractInvocationContext.java:131)
at com.sap.caf.rt.interceptors.LogInterceptor.aroundInvoke(LogInterceptor.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585) "
May I know how I can add the GPProcessFactory class to the CAF runtime environment? Or what should I actually do to solve this issue?
I am using NW CE 7.1 EhP1 SP3.
Thanks.
Regards,
Wan LoongHi,
Please confirm which java version you are using for ce711 sp3.If it is 1.6 please uninstall it and install 1.5.0_x which is equal or less than the deployment J2EE servers java version.Then try it.I hope problem will resolve or some error related to versioning may avoid.
Thanks,
Murthy. -
Cannot import DCs, necessary for Web Dynpro use in CAF GP
Hello!
I'm a newbie in SAP technologies. I want to develop a Web Dynpro (WD) application, which will be used as UI in CAF GP. The problem is that I cannot import necessary DCs for this!
As I understand, the following ones are necessary to develop a WD app for use in GP:
caf/eu/gp/api
caf/eu/gp/api/wd
com.sap.security.api.sda
(according to http://help.sap.com/saphelp_nw2004s/helpdata/en/b2/06ae42848bb211e10000000a155106/content.htm)
I acted as it is described in "Implementing a Web Dynpro CO which Implements the GP Interface" (https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/50d74ada-0c01-0010-07a8-8c118d408e59).
Actually, those DCs don't exist in my local configuration - so, as it is told in "Implementing a Web Dynpro CO which Implements the GP Interface", I tried to get the DCs from remote host (there's a server in Intranet with all stuff installed). In NetWeaver Dev Studio, in "Preferences -> Development Configuration Pool" I have written http://<local server>:50100. Actually, I don't know, what port should be used - I've written the one, which handles requests to SAP NetWeaver Portal. The response to "ping" button click is "HTTP response code: 403 (Forbidden)".
I tried to check the status of SLD, and went to http://<local server>:50100/sld. I have successfully logged in, but when I try to go to tab "Administration", I receive the message " 403 Forbidden. You are not authorized to view the requested resource."
Is there a problem with my roles & groups? Actually, I'm in group SAP_SLD_ADMINISTRATOR.
What is wrong?
How can I get the detailed information about the error (log files or something)?
Thanks in advance!Barry, as I understand, I have no these roles, available for granting. Maybe, I've acted in a wrong way (the version of SAP NetWeaver is "Release 2004s".):
I logged in NetWeaver portal as administrator, went to section "User administration", selected my user, opened the tab "Assigned Groups" and searched for the groups you've written - I found no one
Maybe you are looking for
-
How to use Axis to access a web service through Authentication proxy
Using axis access internat web service is success,but access a web service through Authentication proxy is failure.But other java classes connect through a proxy to the internet which works very well: please help me ,thank you!!! import org.apache.ax
-
When running Firefox on a Linux (Ubuntu 11.10) machine, I get this bug at loose intervalls, (sometimes the name of thescript might be different) between 20 Minutes and 2 hours. It virtually stops the machine, you can barely use the mouse or the keybo
-
How do I get personal movies onto my iPad without using iTunes
Hi, I have several "movies" - like ones my kids made using iMovie on their their ipods, clips of my kids playing their sports, and other non-tradional films that i would like to keep and add or subtract to my liking from my iPad (3rd Gen). In iTunes
-
Hi all, i have a report which uses a bapi to upload data . data is taken from a file on the pc. i have given the provision to provide the file path on the selection screen The report is running properly only problem is when running in the
-
Dear, We are trying to execute the Web Logic Server on Sun Solaris 5.7 and web logic server 7.0.1.0. We are facing the following java related error. Pl. let us know if any suggestion can be made? Thanks, Sachin Starting WebLogic Server... <Sep 22, 20